documen.getElementsByTagName();

childNodes();


XML是一种严格的文档格式,有其自身的规范

解析XML,也有其标准,叫做DOM标准

Html xml 都遵守DOM标准

因为无论在phpjavac,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>


如何通过phpDOM对象,来解析XML

1. xml文件读入进来,形成一个XML文档对象 对应js中的document对象

2.在通过getElementsByTagName(标签名 ) 得到一组节点,对应jsdocumen.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() 代表取得的节点数量

//有一个方法:itemN)代表取得第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的步骤:

------


时间:2014年3月28日21:00:49DOM解析XML