XML基础(XPATH)

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

表达式描述
节点名选择所有该名称的节点集
/选择根节点
//选择当前节点下的所有节点
.选择当前节点
..选择父节点
@选择属性

 

示例

表达式描述
bookstore选择所有bookstore子节点
/bookstore

选择根节点bookstore

bookstore/book在bookstore的子节点中选择所有名为book的节点
//book选择xml文档中所有名为book的节点
bookstore//book选择节点bookstore下的所有名为book为节点
//@lang选择所有名为lang的属性

断言

在方括号中[],用来更进一步定位选择的元素

表达式描述
/bookstore/book[1]

选择根元素bookstore的book子元素中的第一个
注意: IE5以上浏览器中第一个元素是0

/bookstore/book[last()]选择根元素bookstore的book子元素中的最后一个
/bookstore/book[last()-1]选择根元素bookstore的book子元素中的最后第二个
/bookstore/book[position()<3]选择根元素bookstore的book子元素中的前两个
//title[@lang]选择所有拥有属性lang的titile元素
//title[@lang='eng']选择所有属性值lang为eng的title元素
/bookstore/book[price>35.00]选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的
/bookstore/book[price>35.00]/title选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的title子元素

 

选择位置的节点

通配符描述
*匹配所有元素
@*匹配所有属性节点
node()匹配任何类型的节点

示例

表达式描述
/bookstore/*选择根元素bookstore的下的所有子元素
//*选择文档中所有元素
//title[@*]算则所有拥有属性的title元素

使用操作符“|”组合选择符合多个path的表达式

 

XML示例文档

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>


XPath 轴

An axis defines a node-set relative to the current node.

名称描述
ancestor选择所有当前元素的上级(父元素,爷爷元素...)
ancestor-or-self选择所有父元素和本身
attribute选择当前元素的所有属性
child选择当前节点的所有子节点
descendant选择所有当前节点的儿孙节点
descendant-or-self选择所有当前节点的儿孙节点和本身
following选择文档中当前节点闭合标签之后的所有内容
following-sibling选择当前标签后的兄弟节点
namespace选择当前节点的所有命名空间元素
parent选择当前节点的父节点
preceding选择文档中当前节点开始标签前的所有内容
preceding-sibling选择当前标签前的兄弟节点
self选择自己


Location Path Expression

绝对路径:
/step/step/...
相对路径:
step/step/...

示例

示例结果
child::book当前节点下的BOOK节点
attribute::lang当前节点的lang属性
child::*当前节点下的所有节点
attribute::*当前节点下的所有属性
child::text()当前节点的文本内容
child::node()当前节点的所有子节点
descendant::book当前节点所有book下代节点(包括儿子孙子...)
ancestor::book当前节点所有book上代节点(包括爸爸爷爷...)
ancestor-or-self::book当前节点所有book上代节点和本身(如果本很是book节点)
child::*/child::price当前节点的所有price孙子节点(仅仅是孙子)

 

XPATH操作符

操作符描述示例结果
|组合两个路径式//book | //cdReturns a node-set with all book and cd elements
+6 + 410
-6 - 42
*

6 * 4

24
div8 div 42
=等于price=9.80true if price is 9.80
false if price is 9.90
!=不等price!=9.80true if price is 9.90
false if price is 9.80
<小于price<9.80true if price is 9.00
false if price is 9.80
<=小于等于price<=9.80true if price is 9.00
false if price is 9.90
>大于price>9.80true if price is 9.90
false if price is 9.80
>=大于等于price>=9.80true if price is 9.90
false if price is 9.70
orprice=9.80 or price=9.70true if price is 9.80
false if price is 9.50
andprice>9.00 and price<9.90true if price is 9.80
false if price is 8.50
mod求余5 mod 21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值