欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php读写xml文件的方法介绍

程序员文章站 2022-06-05 20:06:19
...
  1. header("content-type:text/html; charset=utf-8"); //指定PHP使用UTF-8编码
  2. $xml = simplexml_load_file("example.xml"); //读取xml文件
  3. $newxml = $xml->asXML(); //标准化$xml
  4. $fp = fopen("newxml.xml", "w"); //新建xml文件
  5. fwrite($fp, $newxml); //写入-------xml文件
  6. fclose($fp);
复制代码

php可以方便的生成和读取xml文件。 主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作。

下面为大家介绍如何使用这些类,供大家学习参考。

一.生成XML文件 对于一个如下XML文件。

  1. PHP访问mysql数据库 初级篇
  2. http://blog.csdn.net/morewindows/article/details/7102362
  3. PHP访问MySql数据库 初级篇
  4. http://blog.csdn.net/morewindows/article/details/7102362
复制代码

我们来看看如何用PHP来生成:

首先new一个DOMDocument对象并设置编码格式。

  1. $dom = newDOMDocument('1.0', 'UTF-8');
  2. $dom->formatOutput= true;
复制代码

再创建结点和

结点 <div class="blockcode"> <div id="code_qiv"><ol> <li> <li>$rootelement =$dom->createElement("article");</li> <li>$title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");</li> </ol></div> <em onclick="copycode($('code_qiv'));">复制代码</em> </div> <p>然后创建带文本内容的<link>结点 </p> <div class="blockcode"> <div id="code_rRR"><ol> <li> <li>$link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");</li> </ol></div> <em onclick="copycode($('code_rRR'));">复制代码</em> </div> <p>也可以先生成<link>结点再为其添加文本内容。 </p> <div class="blockcode"> <div id="code_wcK"><ol> <li> <li>$link = $dom->createElement("link");</li> <li>$linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');</li> <li>$link->appendChild($linktext);</li> </ol></div> <em onclick="copycode($('code_wcK'));">复制代码</em> </div> <p>然后将</p> <title>和<link>结点加入到结点中去 <div class="blockcode"> <div id="code_zKk"><ol> <li> <li>$rootelement->appendChild($title);</li> <li>$rootelement->appendChild($link);</li> </ol></div> <em onclick="copycode($('code_zKk'));">复制代码</em> </div> <p>最后将结点加入到DOMDocument对象中, </p> <div class="blockcode"> <div id="code_fY4"><ol> <li> <li>$dom->appendChild($rootelement);</li> </ol></div> <em onclick="copycode($('code_fY4'));">复制代码</em> </div> <p>这样一个完整的XML就生成完毕了。再整出整个XML, </p> <div class="blockcode"> <div id="code_O6A"><ol> <li> <li>echo $dom->saveXML() ;</li> </ol></div> <em onclick="copycode($('code_O6A'));">复制代码</em> </div> <p>saveXML()也可以只输入部分XML文本,如echo $dom->saveXML($link);就只会输出<link>结点:<link>http://blog.csdn.net/morewindows/article/details/7102362</p> <p>下面再给出一个完整的PHP中数据内容输出到XML文件的例子。该例子会对将一个PHP数组输出到XML文件中。 </p> <div class="blockcode"> <div id="code_du9"><ol> <li> <li> <?php <li>//将数组输出到XML文件中</li> <li>// by MoreWindows( http://blog.csdn.net/MoreWindows )</li> <li>$article_array = array(</li> <li>"第一篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 初级篇",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"</li> <li>),</li> <li>"第二篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"</li> <li>),</li> <li>"第三篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"</li> <li>),</li> <li>);</li> <li>$dom = new DOMDocument('1.0', 'UTF-8');</li> <li>$dom->formatOutput = true;</li> <li>$rootelement = $dom->createElement("MoreWindows");</li> <li>foreach ($article_array as $key=>$value)</li> <li>{</li> <li>$article = $dom->createElement("article", $key);</li> <li>$title = $dom->createElement("title", $value['title']);</li> <li>$link = $dom->createElement("link", $value['link']);</li> <li>$article->appendChild($title);</li> <li>$article->appendChild($link);</li> <li>$rootelement->appendChild($article);</li> <li>}</li> <li>$dom->appendChild($rootelement);</li> <li>$filename = "D:test.xml";</li> <li>echo 'XML文件大小' . $dom->save($filename) . '字节';</li> <li>?></li> </ol></div> <em onclick="copycode($('code_du9'));">复制代码</em> </div> <p>#------------------- </p> <div class="blockcode"> <div id="code_LNR"><ol> <li> <li> <?php <li>//将数组输出到XML文件中</li> <li>// by MoreWindows( http://blog.csdn.net/MoreWindows )</li> <li>$article_array = array(</li> <li>"第一篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 初级篇",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"</li> <li>),</li> <li>"第二篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"</li> <li>),</li> <li>"第三篇" => array(</li> <li>"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"</li> <li>),</li> <li>);</li> <li>$dom = new DOMDocument('1.0', 'UTF-8');</li> <li>$dom->formatOutput = true;</li> <li>$rootelement = $dom->createElement("MoreWindows");</li> <li>foreach ($article_array as $key=>$value)</li> <li>{</li> <li>$article = $dom->createElement("article", $key);</li> <li>$title = $dom->createElement("title", $value['title']);</li> <li>$link = $dom->createElement("link", $value['link']);</li> <li>$article->appendChild($title);</li> <li>$article->appendChild($link);</li> <li>$rootelement->appendChild($article);</li> <li>}</li> <li>$dom->appendChild($rootelement);</li> <li>$filename = "D:test.xml";</li> <li>echo 'XML文件大小' . $dom->save($filename) . '字节';</li> <li>?></li> </ol></div> <em onclick="copycode($('code_LNR'));">复制代码</em> </div> <p> 运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)</p> <p><u><strong>二.读取XML文件</strong></u> 以读取前文中生成的D:test.xml为例: </p> <div class="blockcode"> <div id="code_oek"><ol> <li> <li> <li><p><?php <li>//读取XML文件</p></li> <li>// by MoreWindows( http://blog.csdn.net/MoreWindows )</li> <li>$filename = "D:test.xml";</li> <li>$article_array = array();</li> <li><p>$dom = new DOMDocument('1.0', 'UTF-8');</p></li> <li>$dom->load($filename);</li> <li><p>//得到<article>结点<li>$articles = $dom->getElementsByTagName("article");</li> <li>echo '<article> 结点个数 ' . $articles->length;<li>foreach ($articles as $article)</li> <li>{</li> <li>$id = $article->getElementsByTagName("id")->item(0)->nodeValue;</li> <li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;</li> <li>$link = $article->getElementsByTagName("link")->item(0)->nodeValue;</li> <li>$article_array[$id] = array('title'=>$title, 'link'=>$link);</li> <li>}</li></article> </li></article></p></li> <li><p>//输出结果</p></li> <li>echo "<pre class="brush:php;toolbar:false">";</pre> </li> <li>var_dump($article_array);</li> <li>echo "";</li> <li>?></li> <li> </ol></div> <em onclick="copycode($('code_oek'));">复制代码</em> </div> <p>#----------------- </p> <div class="blockcode"> <div id="code_PhZ"><ol> <li> <li> <li><p><?php <li>//读取XML文件</p></li> <li>// by MoreWindows( http://blog.csdn.net/MoreWindows )</li> <li>$filename = "D:test.xml";</li> <li>$article_array = array();</li> <li><p>$dom = new DOMDocument('1.0', 'UTF-8');</p></li> <li>$dom->load($filename);</li> <li><p>//得到<article>结点<li>$articles = $dom->getElementsByTagName("article");</li> <li>echo '<article> 结点个数 ' . $articles->length;<li>foreach ($articles as $article)</li> <li>{</li> <li>$id = $article->getElementsByTagName("id")->item(0)->nodeValue;</li> <li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;</li> <li>$link = $article->getElementsByTagName("link")->item(0)->nodeValue;</li> <li>$article_array[$id] = array('title'=>$title, 'link'=>$link);</li> <li>}</li></article> </li></article></p></li> <li><p>//输出结果</p></li> <li>echo "<pre class="brush:php;toolbar:false">";</pre> </li> <li>var_dump($article_array);</li> <li>echo "";</li> <li>?></li> <li> </ol></div> <em onclick="copycode($('code_PhZ'));">复制代码</em> </div>