xpath 介绍
1、什么是 xpath
- xpath(XML Path Language)是一门在 XML 和 HTML 文档中查找信息的语言,可用来在 XML 和 HTML 文档中对元素和属性进行遍历。
2、xpath 开发工具
- Chrome 插件 XPath Helper
- Firefox 插件 XPath Checker
3、xpath 语法
- 选取节点: xpath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
表达式 | 描述 | 示例 | 结果 |
---|
nodename | 选取此节点的所有节点 | bookstore | 选取 bookstore 下所有的子节点 |
/ | 如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点 | /bookstore | 选取根元素下所有的 bookstore 节点 |
// | 从全局节点中选择节点,随便在哪个位置 | //book | 从全局节点中找到所有的 book 节点 |
@ | 选取某个节点的属性 | //book[@price] | 选择所有拥有 price 属性的 book 节点 |
- 谓语: 谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。在下面表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
路径表达式 | 描述 |
---|
/bookstore/book[1] | 选取 bookstore 下的第一个 book 元素 |
/bookstore/book[last()] | 选取 bookstore 下的倒数第二个 book 元素 |
bookstore/book[position()< 3] | 选取 bookstore 下的前面两个 book 元素 |
//book[@price] | 选取拥有 price 属性的吧 book 元素 |
//book[@price=10] | 选取所有属性 price 等于10的 book 元素 |
- 有时候某个属性中包含了很多值,那么可以使用 contains 方法(模糊匹配),代码示例如下:
//div[contains(@class,'job_detail')]
通配符 | 描述 | 示例 | 结果 |
---|
* | 匹配任意节点 | /bookstore/* | 选取 bookstore 下的所有子元素 |
@* | 匹配节点中的任何属性 | //book[@*] | 选取所有带属性的 book 元素 |
- 选取多个路径: 通过在路径表达式中使用 “|” 运算符,可以选取若干个路径。代码示例如下:
//bookstore/book | //book/title
运算符 | 描述 | 实例 | 返回值 |
---|
| | 计算两个节点集 | //book | //cd | 返回所有拥有 book 和 cd 元素的节点集 |
+ | 加法 | 6 + 4 | 10 |
- | 减法 | 6 - 4 | 2 |
* | 乘法 | 6 * 4 | 24 |
div | 除法 | 8 div 4 | 2 |
= | 等于 | price = 9.80 | 如果 price 等于9.80,则返回 true,如果 price 是9.90,则返回 false |
!= | 不等于 | price != 9.80 | 如果 price 等于9.90,则返回 true,如果 price 是9.80,则返回 false |
< | 小于 | price < 9.80 | 如果 price 等于9.00,则返回 true,如果 price 是9.90,则返回 false |
<= | 小于等于 | price <= 9.80 | 如果 price 等于9.00,则返回 true,如果 price 是9.90,则返回 false |
> | 大于 | price > 9.80 | 如果 price 等于9.90,则返回 true,如果 price 是9.80,则返回 false |
>= | 大于等于 | price >= 9.80 | 如果 price 等于9.90,则返回 true,如果 price 是9.00,则返回 false |
or | 或 | price = 9.80 or price = 9.70 | 如果 price 等于9.80,则返回 true,如果 price 是9.00,则返回 false |
and | 与 | price > 9.00 and price < 9.70 | 如果 price 等于9.60,则返回 true,如果 price 是9.80,则返回 false |
mod | 计算除法的余数 | 5 mod 2 | |