什么是XPath1
XPath 是一门在 XML 文档中查找信息的语言。
节点
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。
XML 文档即节点树。
树的根被称为文档节点或者根节点,记作 /。
示例:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
上面的 XML 文档中的节点例子:
<bookstore> (文档节点)
<author>J K. Rowling</author> (元素节点)
lang="en" (属性节点)
XPath语法
选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
路径表达式 | 作用 | 说明 |
---|---|---|
bookstore | 选取 bookstore 节点及其所有子节点 | |
/bookstore | 选取根节点 bookstore | 以/(根节点)开头表示绝对路径 |
bookstore/book | 选取bookstore节点下的所有 book 节点 | |
//book | 不考虑位置,选取所有 book节点 | |
bookstore//book | 不考虑在 bookstore 下的什么位置,选取 bookstore 节点的后代的所有 book 节点 | |
//@lang | 选取名为 lang 的所有属性 |
谓语(Predicates)
示例 | 作用 |
---|---|
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素 |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素 |
/bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素 |
/bookstore/book[position() < 3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素 |
//title[@lang=‘eng’] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性 |
/bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00 |
通配符
示例 | 作用 |
---|---|
/bookstore/* | 选取 bookstore 元素的所有子元素 |
//* | 选取文档中的所有元素 |
//title[@*] | 选取所有带有属性的 title 元素 |