documen.getElementsByTagName();
childNodes();
XML是一种严格的文档格式,有其自身的规范
解析XML,也有其标准,叫做DOM标准
Html xml 都遵守DOM标准
因为无论在php,java,c,js中解析DOM树,遵循的都是同样的DOM标准
<!-- 02.xml --> <?xml version="1.0" encoding="utf-8"?> <bookstore> <book> <title>天龙八部</title> <price>28.8</price> </book> <book> <title>诗集</title> <price>19.9</price> </book> </bookstore> |
如何通过php的DOM对象,来解析XML
1. 把xml文件读入进来,形成一个XML文档对象 对应js中的document对象
2.在通过getElementsByTagName(‘标签名’ ) 得到一组节点,对应js中documen.getElementsByTagName();
3.再把得到的一组对象,取得其某一个值,就得到具体的节点
XML 文档--》节点列表--》节点
先得到文档对象,在得到节点列表对象,再细化得到节点对象
创建DOM解析对象
<?php //1.创建DOM解析对象 $dom = new DOMdocument(‘1.0‘,‘utf-8‘); /* DOMdocument object 作用? 可以把XML文件载入内存并分析 可以利用object分析XML */ print_r($dom);//DOMDocument Object ( ) echo "<br/>"; //2.载入XML对象 得到整个文档对象 $dom->load(‘./02.xml‘); //3.得到title节点列表 //因为title对象节点有很多,因此得到的是节点列表对象 $ts = $dom->getElementsByTagName(‘title‘); print_r($ts);//DOMNodeList Object ( )节点列表对象 echo "<br/>"; //4 获取子节点列表 //DOMNodelist //有一个属性:length() 代表取得的节点数量 //有一个方法:item(N)代表取得第N个节点 echo "我们得到".$ts->length,‘本书‘; echo "<br/>"; print_r($ts->item(0)); //DOMElement Object ( ) echo "<br/>"; //<title>天龙八部</title> //天龙八部是一个文本节点,而且是<title></title>的子节点 $title0 = $ts->item(0); print_r($title0->childNodes);//DOMNodeList Object ( ) echo "<br/>"; echo $title0->childNodes->length,‘个子节点‘;//1个子节点 echo "<br/>"; $text = $title0->childNodes->item(0); print_r($text); //DOMText Object ( ) echo "<br/>"; echo $text->wholeText;//天龙八部 echo $dom->getElementsByTagName("title")->item(1)->childNodes->item(0)->wholeText; //文档对象--列表对象--某一个节点- 子节点列表-某一个子节点 -获取文本内容- -- -- /*<?xml version="1.0" encoding="utf-8"?> <bookstore> <book> <title>天龙八部</title> <price>28.8</price> </book> <book> <title>诗集</title> <price>19.9</price> </book> </bookstore>*/ ?> |
还有简单的写法:
$dom = new DOMdocument(‘1.0‘,‘utf-8‘); $dom->load(‘./02.xml‘); echo $dom->getElementsByTagName(‘title‘)->item(1)->nodeValue; |
解析XML的步骤:
面---串 --- 点
本文出自 “杜国栋个人PHP学习博文” 博客,请务必保留此出处http://duguodong.blog.51cto.com/7667978/1386402
时间:2014年3月28日21:00:49DOM解析XML,布布扣,bubuko.com
原文:http://duguodong.blog.51cto.com/7667978/1386402