找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4165|回复: 0

[原]PHP读写XML文件

[复制链接]
发表于 2012-2-23 20:46:16 | 显示全部楼层 |阅读模式
PHP读写XML文件
author: MoreWindows
blog:    http://blog.csdn.net/MoreWindows
KeyWord:    PHP 解析XML DOMDocument XML文件操作

PHP可以方便的生成和读取XML文件。PHP主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作的。下面就简要说明下如何使用这些类。
一.生成XML文件对于一个如下XML文件。
<?xml version="1.0" encoding="UTF-8"?><article>  <title>PHP访问MySql数据库 初级篇</title>  <link>http://blog.csdn.net/morewindows ... gt;</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//将数组输出到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为例:
  1. <?php
  2. //读取XML文件
  3. // by MoreWindows( http://blog.csdn.net/MoreWindows )
  4. $filename = "D:\\test.xml";
  5. $article_array = array();
  6. $dom = new DOMDocument('1.0', 'UTF-8');
  7. $dom->load($filename);
  8. //得到<article>结点
  9. $articles = $dom->getElementsByTagName("article");
  10. echo '<article> 结点个数 ' . $articles->length;
  11. foreach ($articles as $article)
  12. {
  13.         $id = $article->getElementsByTagName("id")->item(0)->nodeValue;
  14.         $title = $article->getElementsByTagName("title")->item(0)->nodeValue;
  15.         $link = $article->getElementsByTagName("link")->item(0)->nodeValue;
  16.         $article_array[$id] = array('title'=>$title, 'link'=>$link);
  17. }
  18. //输出结果
  19. echo "<pre>";
  20. var_dump($article_array);
  21. echo "</pre>";
  22. ?>
复制代码
运行结果如下:
更详细的内容请访问PHP手册中的DOMDocument类。当然想要更加方便可以使用一些第三方提供的XML类库,这里就不一一列举了,有兴趣可以到网上找找。


转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/7241452

您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-4-30 00:33 , Processed in 0.014432 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表