PHP基础之使用DOM解析xml
2015-04-07 15:11
661 查看
还是解析xml文档,不同的是使用另一种方法,上一篇中记录的是用Expat解析xml,这一篇使用DOM解析,这两者的区别在于,Expat解析xml时不会一次将文档全部读入内存,而DOM解析则会一次性将文档读入内存,我们还是用上一篇中的xml文档,xml文件的内容如下:
上面的代码中需要注意的是,这里编写了一个公用的函数getNodeValueByName()用于获取某个标签中的值,其中参数$person为一个person标签对应的DOMElement对象,需要使用$person->getElementsByTagName()函数,获取person标签下某个子标签的集合$nodes,然后用$nodes->item(0)获取第一个标签对应的元素,最后用nodeValue取到该标签的值。还要注意的一个地方是取person的id时,因为$xmlDoc->getElementsByTagName("person");获取的也是person节点的集合,所以我们要用foreach循环取person,尽管我们的xml文件中只有一个person标签,在取id时,我们使用的是$person->attributes->item(0)->nodeValue;因为person标签中可能有多个attribute,所以$person->attributes获取到的是attributes的集合,也要使用Item(0)得到第一个attribute即id
<?xml version="1.0" encoding="utf-8"?> <person id="1"> <name>zhangsan</name> <age>21</age> <job>teacher</job> <sex>male</sex> <company>IBM</company> </person>下面是解析该xml文件的php代码:
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("data.txt"); $persons = $xmlDoc->getElementsByTagName("person"); foreach($persons as $person){ $id = $person->attributes->item(0)->nodeValue; echo "id = $id<br/>"; $name = getNodeValueByName($person, "name"); echo "name = $name<br/>"; $age = getNodeValueByName($person, "age"); echo "age = $age<br/>"; $sex = getNodeValueByName($person, "sex"); echo "sex = $sex<br/>"; $job = getNodeValueByName($person, "job"); echo "job = $job<br/>"; $company = getNodeValueByName($person, "company"); echo "company = $company<br/>"; } function getNodeValueByName($person, $nodeName){ $nodes = $person->getElementsByTagName($nodeName); return $nodes->item(0)->nodeValue; } ?>在浏览器中访问的结果如下图所示:
上面的代码中需要注意的是,这里编写了一个公用的函数getNodeValueByName()用于获取某个标签中的值,其中参数$person为一个person标签对应的DOMElement对象,需要使用$person->getElementsByTagName()函数,获取person标签下某个子标签的集合$nodes,然后用$nodes->item(0)获取第一个标签对应的元素,最后用nodeValue取到该标签的值。还要注意的一个地方是取person的id时,因为$xmlDoc->getElementsByTagName("person");获取的也是person节点的集合,所以我们要用foreach循环取person,尽管我们的xml文件中只有一个person标签,在取id时,我们使用的是$person->attributes->item(0)->nodeValue;因为person标签中可能有多个attribute,所以$person->attributes获取到的是attributes的集合,也要使用Item(0)得到第一个attribute即id
相关文章推荐
- PHP基础之使用Expat解析xml
- 使用PHP DOM-XML创建和解析XML文件
- Php Xml解析之DOMDocument使用方法浅解
- php4/5使用Dom方式读取和解析和创建XML简单教程
- PHP中使用DOM读取解析XML属性值一例
- 使用PHP DOM-XML创建和解析XML文件
- 使用PHP DOM-XML创建和解析XML文件
- Php Xml解析之DOMDocument使用方法
- Python基础(十一) 使用xml.dom 创建XML文件与解析
- PHP基础之使用SimpleXML解析xml
- 使用PHP DOM-XML创建和解析XML文件
- 《Android开发从零开始》——28.使用DOM和pull解析XML
- PHP通过DOM解析XML文件或者xml字符串
- Qt中使用DOM对XML进行的各种解析(总结) 转
- PHP使用DOM LoadHTML()解析的中文乱码问题
- 如何使用PHP DOM创建动态的XML文件
- 使用DOM技术来对XML文档进行解析范例
- java解析xml:使用DOM
- [转]php使用DOM处理xml文档
- java解析xml之一:使用SAX与DOM