分享

PHP使用DOM解析XML

 yyj的编程之路 2016-06-05

xml是一种严格的文档格式,有其自身的标准,解析xml,也有其标准,叫DOM标准。所有的xml、html都遵循DOM标准。

无论php,java,c,js,解析DOM树都遵循同样的DOM标准。

使用php的DOM对象来解析xml的步骤

  1. 把xml文件读取过来,形成一个xml文档对象。

  2. 再通过getElementsByTagName(“标签名”),来获取一组相应的节点对象。

  3. 再把第二步中获取的一组对象拿过来,取出其中一个,就可以得到具体的节点对象的值了。

使用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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多