xml是一种严格的文档格式,有其自身的标准,解析xml,也有其标准,叫DOM标准。所有的xml、html都遵循DOM标准。
无论php,java,c,js,解析DOM树都遵循同样的DOM标准。
使用php的DOM对象来解析xml的步骤把xml文件读取过来,形成一个xml文档对象。
再通过getElementsByTagName(“标签名”),来获取一组相应的节点对象。
再把第二步中获取的一组对象拿过来,取出其中一个,就可以得到具体的节点对象的值了。
使用php的DOM对象来解析xml的例子
首先创建一个xml文档1.xml。<?xml version="1.0" encoding="UTF-8"?>
yyj1
21
男
yyj2
21
男2
yyj3
50
男3
男3
yyj4
31
男3
a
b
然后再创建一个php文件1.php
//创建DOM对象
$dom=new DOMDocument('1.0','utf-8');
//print_r($dom);
//载入XML文档进行分析
$dom->load('./2015-12-22.xml');
//得到节点列表
$name_list=$dom->getElementsByTagName('name');
//print_r($name_list);因为节点列表很多,得到的是节点列表对象
/*DOMNodelist
* 1.有一个属性:length 代表取得的节点数量
* 2。有一个方法:item(N) 代表取得第N各节点
*/
echo '我们得到了'.$name_list->length.'个学生名字
';
//获得第一个学生名字的节点对象 $name_list->item(0);
/*DOMElement
* 1.有一个属性:length 代表取得的节点数量
* 2。有一个方法:item(N) 代表取得第N各节点
*/
$name0=$name_list->item(2);
//print_r($name0->childNodes);//打印结果又是一个节点列表对象
echo $name0->childNodes->length.'
';//打印得出节点个数
$text=$name0->childNodes->item(0);//获得文本节点
//print_r($text);
echo $text->wholeText.'
';//获得文本节点的值
//简化为
$name=$dom->getElementsByTagName('name')->item(0)->childNodes->item(0)->wholeText;
echo $name.'
';
$name1=$dom->getElementsByTagName('name')->item(3)->nodeValue;
echo $name1.'
';
?>
运行结果我们得到了6个学生名字
1
yyj3
yyj1
yyj4