XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。
下面的例子中红色字体表示使用对应语法获取的元素(或属性)。
1、斜线/从根节点选择 ,基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径,获取满足该路径的所有节点:
选择根元素 语法:/AAA
<AAA >
<BBB />
<CCC />
<BBB />
<DDD >
<BBB />
</DDD >
<CCC >
<DDD >
<BBB />
<BBB />
</DDD >
</CCC >
</AAA >
选择AAA的所有CCC子元素 语法:/AAA/CCC
<AAA >
<BBB />
<CCC />
<BBB />
<DDD >
<BBB />
</DDD >
<CCC >
<DDD >
<BBB />
<BBB />
</DDD >
</CCC >
</AAA >
2、如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系),//会做全文档扫描 。
选择所有BBB元素 语法://BBB
<AAA >
<BBB />
<CCC />
<BBB />
<DDD >
<BBB />
</DDD >
<CCC >
<DDD >
<BBB />
<BBB />
</DDD >
</CCC >
</AAA >
选择所有父元素是DDD的BBB元素 语法://DDD/BBB
<AAA >
<BBB />
<CCC />
<BBB />
<DDD >
<BBB />
</DDD >
<CCC >
<DDD >
<BBB />
<BBB />
</DDD >
</CCC >
</AAA >
选择AAA的CCC的所有BBB元素 语法:/AAA/CCC//BBB
<AAA >
<BBB />
<CCC />
<BBB />
<DDD >
<BBB />
</DDD >
<CCC >
<DDD >
<BBB />
<BBB />
</DDD >
</CCC >
</AAA >
3、点“.” 选取当前节点。
4、“..”选取当前节点的父节点。
5、”@”选取属性。
选择所有的id属性 语法://@id 注意:这里选取的是属性而不是方法。
<AAA >
<BBB id = "b1" />
<BBB id = "b2" />
<BBB name = "bbb" />
<BBB />
</AAA >
选择有id属性的BBB元素 语法://BBB[@id] 区别于上面的属性选择
<AAA >
<BBB id = "b1" />
<BBB id = "b2" />
<BBB name = "bbb" />
<BBB />
</AAA >
选择id属性为“id1”的BBB元素 语法://BBB[@id="b1"]
<AAA >
<BBB id = "b1" />
<BBB id = "b2" />
<BBB name = "bbb" />
<BBB />
</AAA >
选择有任意属性的BBB元素 语法://BBB[@*]
<AAA >
<BBB id = "b1" />
<BBB id = "b2" />
<BBB name = "bbb" />
<BBB />
</AAA >
选择不具有任何属性的BBB元素 语法://BBB[not(@*)]
<AAA >
<BBB id = "b1" />
<BBB id = "b2" />
<BBB name = "bbb" />
<BBB />
</AAA >
谓语在XPath是重要的一部分,谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。
1、选择AAA下的第一个BBB元素 语法:/AAA/BBB[1]
<AAA >
<BBB />
<BBB />
<BBB />
<BBB />
</AAA >
2、选择AAA下的最后一个BBB元素 语法:/AAA/BBB[last()]
<AAA >
<BBB />
<BBB />
<BBB />
<BBB />
</AAA >
3、选择AAA下的倒数第二个BBB元素 语法:/AAA/BBB[last()-1]
<AAA >
<BBB />
<BBB />
<BBB />
<BBB />
</AAA >
4、选择AAA下的前面两个BBB元素 语法:/AAA/BBB[position()<3]
<AAA >
<BBB />
<BBB />
<BBB />
<BBB />
</AAA >
5、获取AAA下的BBB下的有s属性的CCC元素 语法:/AAA/BBB/CCC[@s]
<AAA >
<BBB >
<CCC s = "1" />
<CCC s = "2" />
<CCC s = "3" />
<CCC s = "4" />
<CCC s = "5" />
<CCC r = "a" />
</BBB >
<CCC >
<BBB r = "a" />
<BBB r = "b" />
<BBB r = "c" />
</CCC >
<BBB />
<BBB />
</AAA >
6、选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00。 语法:bookstore/book[price>35.00]
<bookstore >
<book>
<title land="eng">Book1</title>
<price>29.99</tilte>
</book>
<book >
<title land="eng">Book2</title>
<price>39.55</tilte>
</book >
</bookstore >
7、选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00. 语法:/bookstore/book[price>35.00]/title
<bookstore >
<book>
<title land="eng">Book1</title>
<price>29.99</tilte>
</book>
<book>
<title land="eng">Book2</title >
<price>39.55</tilte>
</book>
</bookstore >
来自下面链接(有改动和更新)
http://www.cnblogs.com/zhaozhan/archive/2009/09/09/1563617.html