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"?> <root> <student id="1"> <name>yyj1</name> <age>21</age> <sex>男</sex> </student> <student id="2"> <name>yyj2</name> <age>21</age> <sex>男2</sex> </student> <student id="3"> <name>yyj3</name> <age>50</age> <sex>男3</sex> <sex2>男3</sex2> </student> <student id="4"> <name>yyj4</name> <age>31</age> <sex>男3</sex> </student> <a> <name>a</name> </a> <b> <name>b</name> </b> </root>
然后再创建一个php文件1.php
<?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.'个学生名字<br />';
//获得第一个学生名字的节点对象 $name_list->item(0); /*DOMElement * 1.有一个属性:length 代表取得的节点数量 * 2。有一个方法:item(N) 代表取得第N各节点 */ $name0=$name_list->item(2); //print_r($name0->childNodes);//打印结果又是一个节点列表对象 echo $name0->childNodes->length.'<br />';//打印得出节点个数 $text=$name0->childNodes->item(0);//获得文本节点 //print_r($text); echo $text->wholeText.'<br />';//获得文本节点的值 //简化为 $name=$dom->getElementsByTagName('name')->item(0)->childNodes->item(0)->wholeText; echo $name.'<br />'; $name1=$dom->getElementsByTagName('name')->item(3)->nodeValue; echo $name1.'<br />'; ?>
运行结果 我们得到了6个学生名字 1 yyj3 yyj1 yyj4
|