您当前的位置: 首页 > 学无止境 > XML与XSLT 网站首页XML与XSLT
xml中xpath的使用
发布时间:2015-04-09 07:47:35编辑:雪饮阅读()
先来一个小测试:
php源代码(kuaceng.php):
<?php
$xmldoc=new DOMDocument();
$xmldoc->load("xml.xml");
/*
注意:直接跨层取标签,那么遇到形如:
<名字><名字>雪饮个人博客</名字></名字>
这种情况会把所有的名字标签都取出,并不会只取外层的,取标签会从最外层到最内层逐一遍历逐一取出然后继续回到外层标签继续遍历下一个外层标签又和上一个标签一样直到所有层都遍历结束为止。那么此时这个节点列表长度会是非常多的。所以phpdom只能逐层取出标签,不能够保证层次关系。
*/
$name_nodes=$xmldoc->getElementsByTagName("名字");
echo $name_nodes->length;
?>
xml源代码(kuaceng.xml):
<?xml version='1.0' encoding='utf-8'?>
<班级>
<学生>
<名字>雪饮</名字>
<年龄>23</年龄>
<介绍>愿雪饮个人博客一直能够走下去</介绍>
<名字><名字>雪饮</名字></名字>
</学生>
<学生>
<名字>雪饮2</名字>
<年龄>23</年龄>
<介绍>我是程序员又如何,这是我当初的梦想,至少我实现了我的梦想</介绍>
<名字>雪饮3</名字>
<年龄>23</年龄>
<介绍>雪饮想要做的事情没有办不到的,关键在于是否愿意办这件事情</介绍>
</学生>
</班级>
我们在浏览器中测试php的执行结果如下:
很明显,只有把xml文档中每个外层的标签由外到内遍历并统计之后其结果才能够如此,也就是说如此遍历取出的xml标签只是一个没有层次结构的xml标签节点列表。
为了解决这个问题就需要使用xpath技术,可以像jquery那样的遍历一样,可以按照windows文件路径那种形式进行层次结构式的遍历取出你想要的xml标签列表。
为了说明问题,这里新建一个xml文件和php文件进行研究:
xml源代码(xpathxml.xml):
<?xml version="1.0" encoding="utf-8" ?>
<AAA>
<BBB></BBB>
<CCC></CCC>
<BBB>
<CCC>
<DDD></DDD>
<DDD></DDD>
<DDD></DDD>
</CCC>
</BBB>
<BBB></BBB>
<DDD>
<BBB></BBB>
</DDD>
<CCC></CCC>
</AAA>
关键字词:xml,xpath使用,个人博客