XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
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 使用路径表达式在 XML 文档中选取节点。斜线”/”是从根节点选择,双斜线”//”从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置,点”.”选取当前节点,两点”..”选取当前节点的父节点,“@”为选取属性。
谓语在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>
本篇学习了XPath的谓语,更复杂的谓语结合其他XPath函数使用。