- header("content-type:text/html; charset=utf-8"); //指定PHP使用UTF-8编码
- $xml = simplexml_load_file("example.xml"); //读取xml文件
- $newxml = $xml->asXML(); //标准化$xml
- $fp = fopen("newxml.xml", "w"); //新建xml文件
- fwrite($fp, $newxml); //写入-------xml文件
- fclose($fp);
php可以方便的生成和读取xml文件。
主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作。
下面为大家介绍如何使用这些类,供大家学习参考。
一.生成XML文件
对于一个如下XML文件。
- PHP访问mysql数据库 初级篇
- http://blog.csdn.net/morewindows/article/details/7102362
- PHP访问MySql数据库 初级篇
- http://blog.csdn.net/morewindows/article/details/7102362
我们来看看如何用PHP来生成:
首先new一个DOMDocument对象并设置编码格式。
- $dom = newDOMDocument('1.0', 'UTF-8');
- $dom->formatOutput= true;
再创建结点和 结点
- $rootelement =$dom->createElement("article");
- $title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");
然后创建带文本内容的结点
- $link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");
也可以先生成结点再为其添加文本内容。
- $link = $dom->createElement("link");
- $linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');
- $link->appendChild($linktext);
然后将 和结点加入到结点中去
- $rootelement->appendChild($title);
- $rootelement->appendChild($link);
最后将结点加入到DOMDocument对象中,
- $dom->appendChild($rootelement);
这样一个完整的XML就生成完毕了。再整出整个XML,
- echo $dom->saveXML() ;
saveXML()也可以只输入部分XML文本,如echo $dom->saveXML($link);就只会输出结点:http://blog.csdn.net/morewindows/article/details/7102362
下面再给出一个完整的PHP中数据内容输出到XML文件的例子。该例子会对将一个PHP数组输出到XML文件中。
- //将数组输出到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) . '字节';
- ?>
#-------------------
- //将数组输出到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为例:
//读取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);
//得到结点 - $articles = $dom->getElementsByTagName("article");
- echo ' 结点个数 ' . $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 "
"; - var_dump($article_array);
- echo "";
- ?>
#-----------------
//读取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);
//得到结点 - $articles = $dom->getElementsByTagName("article");
- echo ' 结点个数 ' . $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 "
"; - var_dump($article_array);
- echo "";
- ?>
|