XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
节点
Xpath共有7个节点
节点关系
以当前节点为中心与其他节点的光系。
选取节点
XPath使用路径表达式来选取节点。
| 表达式 | 描述 |
|---|---|
| /div | 从根节点开始,选择所有div子元素节点 |
| //div | 从当前节点开始,选择所有的div后代元素节点 |
| @href | 选择所有拥有href属性的元素节点 |
| . | 选择当前元素节点 |
| . . | 选择当前节点的父元素节点 |
谓语
谓语用来查找某个特定的节点或者包含某个指定的值的节点。
| 谓语 | 描述 |
|---|---|
| /div[1] | 从根节点开始,选择第一个div子元素节点 |
| /div[last()] | 从根节点开始,选择最后一个div子元素节点 |
| /div[position()<5] | 从根节点开始,选择前面5个div子元素节点 |
| /a[@href] | 从根节点开始,选择拥有href属性的a元素节点 |
| /a[@href=‘https://editor.csdn.net/md?not_checkout=1&articleId=108485408’] | 从根节点开始,选择拥有href属性值为https://editor.csdn.net/md?not_checkout=1&articleId=108485408的a元素节点 |
| /a[p>3] | 从根节点开始,选择所有p子元素节点的值大于3的a元素节点 |
| * | 选择所有元素节点 |
| @* | 选择所有属性节点 |
| node() | 选择所有节点 |
| /a | /p |
轴
轴相对于当前节点的节点集。默认从根节点开始。
| 轴 | 描述 |
|---|---|
| ancestor | 选取当前节点的先辈节点 |
| ancestor-or-self | 选取当前节点的先辈节点和自己 |
| parent | 选取当前节点的父节点 |
| child | 选取当前节点的子节点 |
| attribute | 选取当前节点的所有属性 |
| follow | 选取跟随在当前节点的之后所有节点 |
| preceding | 选取在当前节点前的所有节点 |
| preceding-sibling | 选取在当前节点前的兄弟节点 |
| descendant | 选取当前节点的所有后代节点 |
| descendant-or-self | 选取当前节点的所有后代节点 |
| self | 选取当前节点 |
| namespace | 选取当前节点所有命名空间节点 |
运算符
| 运算符 | 描述 |
|---|---|
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| div | 除法 |
| = | 等于 |
| != | 等于 |
| > | 大于 |
| < | 小于 |
| <= | 小于等于 |
| <= | 大于等于 |
| or | 或 |
| and | 与 |
| not | 非 |
| mod | 取模 |
函数
| 函数 | 描述 | 返回值 |
|---|---|---|
| number(‘1’) | 将字符串转化为数字 | 1 |
| abs(-1.5) | 将数字转化为绝对值 | 1.5 |
| ceiling(2.5) | 返回天花板整数 | 3 |
| floor(2.5) | 返回地板整数 | 2 |
| round(3.14) | 四舍五入 | 3 |
| string(1.5) | 转化为字符串 | “1.5” |
| concat(“你”, “好”) | 字符串拼接 | “你好” |
| string-join((“你”, “好”),",") | 字符串插入 | “你,好” |
| substring(“Learning xpath”,3,2) | 字符串切片 | “ar” |
| string-length(“Learning xpath”) | 字符串切片 | 15 |
| normalize-space(" Learning xpath ") | 删除前后的空格,将内部的空格替换成一个 | “Learning xpath” |
| upper-case(“Learning xpath”) | 字符串大写 | “LEARNING XPATH” |
| lower-case(“LEARNING XPATH”) | 字符串大写 | “learning xpath” |
| translate(“Learning python”, “python”, “xpath”) | 字符串替换 | “learning xpath” |
| contains(“Learning python”, “python”) | 检查是否包含字符串 | True |
| starts-with(“Learning python”, “python”) | 检查是否以python开头 | False |
| ends-with(“Learning python”, “python”) | 检查是否以python结束 | True |
| substring-before(“Learning python”, “python”) | 放回python前的字符串 | “Leadrning” |
| substring-after(“Learning python”, “Learning”) | 放回Learning前的字符串 | " python" |
| matches(“Learning python”, “Learning”) | 是否搜索得到Learning | True |
| replce(“Learning python”, “python”,“xpath”) | 字符串替换 | “learning xpath” |
| tokenize(“Learning python”,"\s+") | 字符串替换 | “learning”, “python” |
更多函数查看:
https://www.w3school.com.cn/xpath/xpath_functions.asp