PHP读写XML文件

来源:互联网 发布:Tensorflow训练验证码 编辑:程序博客网 时间:2024/04/30 16:10

原文地址:http://blog.csdn.net/morewindows/article/details/7241452

PHP可以方便的生成和读取XML文件。PHP主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作的。下面就简要说明下如何使用这些类。

一.生成XML文件

对于一个如下XML文件。

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <article>  
  3.   <title>PHP访问MySql数据库 初级篇</title>  
  4.   <link>http://blog.csdn.net/morewindows/article/details/7102362</link>  
  5. </article>  

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

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

$dom = newDOMDocument('1.0', 'UTF-8');

$dom->formatOutput= true;

 

再创建<article>结点和<title>结点

$rootelement =$dom->createElement("article");

$title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");

 

然后创建带文本内容的<link>结点

$link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");

也可以先生成<link>结点再为其添加文本内容。

$link = $dom->createElement("link");

$linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');

$link->appendChild($linktext);

 

然后将<title>和<link>结点加入到<article>结点中去

$rootelement->appendChild($title);

$rootelement->appendChild($link);

 

最后将<article>结点加入到DOMDocument对象中,

$dom->appendChild($rootelement);

 

这样一个完整的XML就生成完毕了。再整出整个XML,

echo $dom->saveXML() ;

saveXML()也可以只输入部分XML文本,如echo $dom->saveXML($link);就只会输出<link>结点:<link>http://blog.csdn.net/morewindows/article/details/7102362</link>

 

下面再给出一个完整的PHP中数据内容输出到XML文件的例子。该例子会对将一个PHP数组输出到XML文件中。

[php] view plaincopy
  1. <?php  
  2. //将数组输出到XML文件中  
  3. // by MoreWindows( http://blog.csdn.net/MoreWindows )  
  4. $article_array = array(  
  5.     "第一篇" => array(  
  6.         "title"=>"PHP访问MySql数据库 初级篇",   
  7.         "link"=>"http://blog.csdn.net/morewindows/article/details/7102362"  
  8.     ),  
  9.     "第二篇" => array(  
  10.         "title"=>"PHP访问MySql数据库 中级篇 Smarty技术",   
  11.         "link"=>"http://blog.csdn.net/morewindows/article/details/7094642"  
  12.     ),  
  13.     "第三篇" => array(  
  14.         "title"=>"PHP访问MySql数据库 高级篇 AJAX技术",   
  15.         "link"=>"http://blog.csdn.net/morewindows/article/details/7086524"  
  16.     ),  
  17. );  
  18. $dom = new DOMDocument('1.0''UTF-8');  
  19. $dom->formatOutput = true;  
  20. $rootelement = $dom->createElement("MoreWindows");  
  21. foreach ($article_array as $key=>$value)  
  22. {  
  23.     $article = $dom->createElement("article"$key);  
  24.     $title = $dom->createElement("title"$value['title']);  
  25.     $link = $dom->createElement("link"$value['link']);  
  26.     $article->appendChild($title);  
  27.     $article->appendChild($link);  
  28.     $rootelement->appendChild($article);  
  29. }  
  30. $dom->appendChild($rootelement);  
  31. $filename = "D:\\test.xml";  
  32. echo 'XML文件大小' . $dom->save($filename) . '字节';  
  33. ?>  

运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)

 

二.读取XML文件  

以读取前文中生成的D:\\test.xml为例:

[php] view plaincopy
  1. <?php  
  2. //读取XML文件  
  3. // by MoreWindows( http://blog.csdn.net/MoreWindows )  
  4. $filename = "D:\\test.xml";  
  5. $article_array = array();  
  6.   
  7. $dom = new DOMDocument('1.0''UTF-8');  
  8. $dom->load($filename);  
  9.   
  10. //得到<article>结点  
  11. $articles = $dom->getElementsByTagName("article");  
  12. echo '<article> 结点个数 ' . $articles->length;  
  13. foreach ($articles as $article)  
  14. {  
  15.     $id = $article->getElementsByTagName("id")->item(0)->nodeValue;  
  16.     $title = $article->getElementsByTagName("title")->item(0)->nodeValue;  
  17.     $link = $article->getElementsByTagName("link")->item(0)->nodeValue;  
  18.     $article_array[$id] = array('title'=>$title'link'=>$link);  
  19. }  
  20.   
  21. //输出结果  
  22. echo "<pre>";  
  23. var_dump($article_array);  
  24. echo "</pre>";  
  25. ?>  

运行结果如下:

更详细的内容请访问PHP手册中的DOMDocument类。当然想要更加方便可以使用一些第三方提供的XML类库,这里就不一一列举了,有兴趣可以到网上找找。

0 0
原创粉丝点击