当前位置:编程学习 > XML/UML >>

PHP读写XML文件

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

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

[html] <?xml version="1.0" encoding="UTF-8"?> 
<article> 
  <title>PHP访问MySql数据库 初级篇</title> 
  <link>http://blog.csdn.net/morewindows/article/details/7102362</link> 
</article> 
<?xml version="1.0" encoding="UTF-8"?>
<article>
  <title>PHP访问MySql数据库 初级篇</title>
  <link>http://blog.csdn.net/morewindows/article/details/7102362</link>
</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] <?php 
//将数组输出到XML文件中  
// by MoreWindows( http://blog.csdn.net/MoreWindows )  
$article_array = array( 
    "第一篇" => array( 
        "title"=>"PHP访问MySql数据库 初级篇",  
        "link"=>"http://blog.csdn.net/morewindows/article/details/7102362" 
    ), 
    "第二篇" => array( 
        "title"=>"PHP访问MySql数据库 中级篇 Smarty技术",  
        "link"=>"http://blog.csdn.net/morewindows/article/details/7094642" 
    ), 
    "第三篇" => array( 
        "title"=>"PHP访问MySql数据库 高级篇 AJAX技术",  
        "link"=>"http://blog.csdn.net/morewindows/article/details/7086524" 
    ), 
); 
$dom = new DOMDocument('1.0', 'UTF-8'); 
$dom->formatOutput = true; 
$rootelement = $dom->createElement("MoreWindows"); 
foreach ($article_array as $key=>$value) 

    $article = $dom->createElement("article", $key); 
    $title = $dom->createElement("title", $value['title']); 
    $link = $dom->createElement("link", $value['link']); 
    $article->appendChild($title); 
    $article->appendChild($link); 
    $rootelement->appendChild($article); 

$dom->appendChild($rootelement); 
$filename = "D:\\test.xml"; 
echo 'XML文件大小' . $dom->save($filename) . '字节'; 
?> 
<?php
//将数组输出到XML文件中
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$article_array = array(
 "第一篇" => array(
  "title"=>"PHP访问MySql数据库 初级篇",
  "link"=>"http://blog.csdn.net/morewindows/article/details/7102362"
 ),
 "第二篇" => array(
  "title"=>"PHP访问MySql数据库 中级篇 Smarty技术",
  "link"=>"http://blog.csdn.net/morewindows/article/details/7094642"
 ),
 "第三篇" => array(
  "title"=>"PHP访问MySql数据库 高级篇 AJAX技术",
  "link"=>"http://blog.csdn.net/morewindows/article/details/7086524"
 ),
);
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$rootelement = $dom->createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
 $article = $dom->createElement("article", $key);
 $title = $dom->createElement("title", $value['title']);
 $link = $dom->createElement("link", $value['link']);
 $article->appendChild($title);
 $article->appendChild($link);
 $rootelement->appendChild($article);
}
$dom->appendChild($rootelement);
$filename = "D:\\test.xml";
echo 'XML文件大小' . $dom->save($filename) . '字节';
?>
运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)

 

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

[php] <?php 
//读取XML文件  
// by MoreWindows( http://blog.csdn.net/MoreWindows )  
$filename = "D:\\test.xml"; 
$article_array = array(); 
 
$dom = new DOMDocument('1.0', 'UTF-8'); 
$dom->load($filename); 
 
//得到<article>结点  
$articles = $dom->getElementsByTagName("article"); 
echo '<article> 结点个数 ' . $articles->length; 
foreach ($articles as $article) 

    $id = $article->getElementsByTagName("id")->item(0)->nodeValue; 
    $title = $article->getElementsByTagName("title")->item(0)->nodeValue; 
    $link = $article->getElementsByTagName("link")->item(0)->nodeValue; 
    $article_array[$id] = array('title'=>$title, 'link'=>$link); 

 
//输出结果  
echo "<pre>"; 
var_dump($article_array); 
echo "</pre>"; 
?> 
<?php
//读取XML文件
// by MoreWindows( http://blog.csdn.net/MoreWindows )
$filename = "D:\\test.xml";
$article_array = array();

$dom = new DOMDocument('1.0', 'UTF-8');
$d

补充:Web开发 , php ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,