PHP创建与解析 XML 1 (36)

一.使用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');

 

你可能感兴趣的:(xml)