Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php读写xml文件的方法介绍

php读写xml文件的方法介绍

WBOY
WBOYasal
2016-07-25 09:03:38855semak imbas
  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>


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn