码迷,mamicode.com
首页 > Web开发 > 详细

PHP创建与解析 XML 1 (36)

时间:2015-05-30 10:33:14      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

一.使用SimpleXML操控XML

要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也非常的简单。

  1.创建XML文件

$_xml =<<<xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<version>1.0</version>
<info>xml解析测试</info>
<user>
<name>张三</name>
<url>http://www.ss.com</url>
<author sex="">张三</author>
</user>
<user>
<name>宿舍</name>
<url>http://www.ss.com</url>
<author sex="">谁谁谁</author>
</user>
<user>
<name>电驴</name>
<url>http://www.ss.com</url>
<author sex="">姓黄的</author>
</user>
</root>
xml;
$_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串
$_sxe->asXML(test.xml); //生成XML文件

  2.载入XML文件

$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($sxe)); //用反射查看详情

  3.解析XML文件

$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($_sxe)); //用发射查看详情
echo $_sxe->asXML();//打印整个XML

  4.读出XML数据

$_sxe= simplexml_load_file("test.xml");
//读取一级节点的值,比如version标签
echo $_sxe->version;
//如果有多个,可以设置它的数字下标
echo $_sxe->version[2];
//如果想要全部打印出来,可以用遍历
foreach ($_sxe->version as $_version) {
echo [.$_version.];
}
//访问二级节点的name
echo $_sxe->user[1]->name;
//获取所有二级节点的name值
foreach ($_sxe->user as $_user) {
echo [.$_user->name.];
}
//获取二级节点的标签的属性
echo $_sxe->user[1]->author->attributes();

  5.使用XPath来获取节点

$_sxe= simplexml_load_file("test.xml");
//使用XPath获取节点信息
$_version = $_sxe->xpath(/root/version);
echo $_version[1];
//遍历version
foreach ($_version as $_v) {
echo [.$_v.];
}
//访问二级节点
$_user = $_sxe->xpath(/root/user);
echo $_user[2]->name;
//遍历二级节点
foreach ($_user as $_u) {
echo [.$_u->name.];
}
//访问属性
echo $_user[1]->author->attributes();

二.使用DOMDocument操控XML

很多情况下,手工生成标记要求从上到下生成文档,必须保证标签都是完整的,开始和结束标签。尽管借助于一些PHP函数或类可以有所改善,不过PHP还提供了一组更有帮助的内置对象和函数。文档对象模型(Document Object Model,DOM)提供了一个树状结构,能很容易创建和处理标签。

  1.DOMDocument解析XML

//创建一个DOMDocument()
$_doc = new DOMDocument();
//载入xml
$_doc->load(test.xml);
//取version标签
$_version = $_doc->getElementsByTagName(version);
echo $_version->item(2)->nodeValue;
//遍历version标签
foreach ($_version as $v) {
echo $v->nodeValue;
}

  2.DOMDocument生成XML

//声明xml
$_doc = new DOMDocument(1.0,utf-8);
//排版格式
$_doc->formatOutput = true;
//创建一个主标签
$_root = $_doc->createElement(root);
//创建一个一级标签version
$_version = $_doc->createElement(version);
//给version标签里赋值
$_versionTextNode = $_doc->createTextNode(1.0);
//将值放入version标签里
$_version->appendChild($_versionTextNode);
//将一级标签version放入root里
$_root->appendChild($_version);
//将主标签写入xml
$_doc->appendChild($_root);
//生成xml
$_doc->save(aaa.xml);

 

PHP创建与解析 XML 1 (36)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4538078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!