XPath语法简介

XPath是一种在xml中查找信息的语言,具体可参考W3school XPath教程
XPath是以路径表达式来选择XML文档中的节点或节点集

XPath节点(Node)

在 XPath 中,XML 文档是被作为节点树来对待的,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>  (文档节点/根节点)

<book>  (元素节点)
  <title lang="en">Harry Potter</title>  (元素节点,lang为属性节点,Harry Potter为文本节点)
  <author>J K. Rowling</author> 
  <year>2005</year>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

节点关系
父(Parent),子(Children),同胞(sibling),先辈(Ancestor),后代(Descendant)

XPath语法

通过路径表达式来选取节点,语法如下表:

表达式 描述 案例
nodename nodename节点下的所有子节点 bookstore选取bookstore的所有子节点 bookstore/book选取bookstore下的所有book节点
/ 从根节点选取 /bookstore选取根元素 bookstore。 假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
// 从匹配选择的当前节点选择文档中同样的节点,而不考虑它们的位置 bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
. 选取当前节点 .book选择当前book节点
.. 选取当前节点的父节点 ..book选取book的父节点bookstore
@ 选取属性 //@lang选取名为lang的所有属性
此外,还可以通过谓语(Predicates)进行更为精准的选择,谓语写在[Predicates]中,例如//title[@lang]则是选择所有拥有名为 lang 的属性的 title 元素。
还可以用*选择未知节点,用逻辑符号` `选取若干路径,具体可参考W3school
posted @ 2018-04-10 20:28  落叶有声  阅读(143)  评论(0编辑  收藏  举报