xpath的使用
来源:互联网 发布:易语言vip解析源码 编辑:程序博客网 时间:2024/05/17 02:35
使用xpath有什么好处?
可以跨层取节点么?
classes.xml文件
<?xml version="1.0" encoding="UTF-8"?><班级><学生><名字>周星驰</名字><年龄>23</年龄><介绍>学习刻苦</介绍></学生><学生><名字>乔峰</名字><年龄>34</年龄><介绍>武功高强</介绍><介绍1>武功高强</介绍1></学生><学生><名字>乔峰</名字><年龄>34</年龄><介绍>武功高强</介绍></学生></班级>
<?php//1,创建DOMDocument对象,代表一个xml文档//Represents an entire HTML or XML document; //serves as the root of the document tree. $xmldoc=new DOMDocument();//2,加载xml(指定你要对哪个xml文档解析)$xmldoc->load("classes.xml");//3,直接取出名字节点$name_nodes=$xmldoc->getElementsByTagName("学生");echo $name_nodes->length;//输出2,php默认支持跨层取的,但是如果还有其同辈元素是“学生”,就出现问题了,不知道取哪个了/* * 如果classes.xml中,指定了编码encoding是utf-8,则解析xml的该php文件 * 编码格式也要是utf-8 */?>
从案例看出,php的dom技术可以跨层取,但是不能保证层次关系,使用xpath可以更好解决
怎样使用xpath
一、通过new DOMXPath,然后调用query方法[和上面的方式进行比较]
<?php //1,创建DOMDocument对象,代表一个xml文档//Represents an entire HTML or XML document; //serves as the root of the document tree. $xmldoc=new DOMDocument();//2,加载xml(指定你要对哪个xml文档解析)$xmldoc->load("classes.xml");//3,Creates a new DOMXPath object. //public DOMXPath::__construct ( DOMDocument $doc )$domXPath=new DOMXPath($xmldoc);//4,使用xpath技术来查询你希望的节点$node_list=$domXPath->query("//学生");//echo $node_list->length;for ($i=0;$i<$node_list->length;$i++){$node=$node_list->item($i);echo $node->tagName."<br/>";}?>
二,通过simplexml_load_file,然后通过SimpleXMLElement类的对象调用xpath方法
<?php//1,simplexml_load_file — Interprets an XML file into an object //Returns an object of class SimpleXMLElement //with properties containing the data held within the XML document$SimpleXMLElement=simplexml_load_file("demo01.xml");$arr=$SimpleXMLElement->xpath("//student");//SimpleXMLElement::xpath — Runs XPath query on XML data//Returns an array of SimpleXMLElement objectsvar_dump($arr);/* * array(2) { * [0]=> object(SimpleXMLElement)#2 (2) { ["name"]=> string(8) "zhangsan" ["age"]=> string(2) "30" } * [1]=> object(SimpleXMLElement)#3 (2) { ["name"]=> string(4) "lisi" ["age"]=> string(2) "32" } * } */foreach ($arr as $val){echo "名字是".$val->name."\n\n"."年龄是"."$val->age"."<br>";}?>
三,先new SimpleXMLElement,然后通过SimpleXMLElement类的对象调用xpath方法【其实和上面的两种,本质上是一样的】
xpath(xml path language)是一种标示节点位置的语言,可以用来描述xml元素的位置。
xpath指令可以指出xml元素在xml文件中的位置,也就是树状结构的节点位置
xpath语言的设计核心思想:可以通过xpath迅捷的定位到你希望查找的节点
xpath学习手册 不错
1)实例 1
基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径
树视图
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
树视图
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
实例 2
如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
树视图
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA
树视图
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
实例 3
星号 * 表示选择所有由星号之前的路径所定位的元素
星号 * 表示选择所有由星号之前的路径所定位的元素
树视图
树视图
树视图
实例 4
方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.
方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.
树视图
树视图
实例 5
属性通过前缀 @ 来指定
属性通过前缀 @ 来指定
树视图
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
树视图
<AAA>
<BBB id = "b1"/>
<BBBid = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
树视图
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
树视图
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
- xpath的使用
- XML XPath的使用
- dom4j xpath的使用
- XPath的使用
- XPath的使用一
- XPath的使用
- Jsoup xpath的使用
- Xpath的使用
- XPath的使用
- xpath的使用
- XPATH的使用
- Java 语言的 XPath使用
- dom4j中xpath的使用
- dom4j中xpath的使用
- C# Xpath 的使用[转载]
- dom4j中xpath的使用
- 详细解释xpath的使用
- dom4j中xpath的使用
- 左乘&右乘
- ListView.setOnItemClickListener无效问题的解决
- VC设置静态文本控件的显示字体和显示内容
- centOS下安装五笔输入法
- Project Euler问题82
- xpath的使用
- session方法及hibernate接口
- 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用
- 创业型公司遇管理之殇:IPO泡汤高管作鸟兽散
- s3c2440 音频移植
- 慎用memcache
- 对曾国藩家训和为官之道的个人理解
- HDU2177 取(2堆)石子游戏 威佐夫博弈
- 3D图形矩阵变换总结