XPath语法
1. 路径
符号 | 意义 |
---|---|
/ |
路径内部分割符 |
绝对路径 | 以/ 开头 |
相对路径 | 以节点名 开头 |
2. 节点
符号 | 意义 |
---|---|
// |
选取所有的匹配节点 |
/ |
选取根部的匹配节点 |
nodename |
选取此节点的所有子节点, 属于相对路径 |
. |
选取当前节点 |
.. |
选取当前节点的父节点 |
@ |
选取属性 |
3. 谓语条件(Predicate), 写在路径中
符号 | 意义 |
---|---|
[i] | 第i个元素, 从1开始 |
last() | 最后一个 |
last()-2 | 倒数第二个 |
@lang | 有属性名为lang的节点 |
@lang='en' | 有属性名为lang, 值为en的节点 |
position() < n | 取n条元素 |
node1[node2] | 必须含有node2元素的node1元素 |
node1[node2>20] | 必须含有node2元素且node2元素值必须大于20的node1元素 |
4. 通配符
符号 | 意义 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何节点 |
5. 多路径
多个路径使用|
分割
6. 轴(Axes)
符号 | 意义 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等) |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
attribute | 选取当前节点的所有属性 |
child | 选取当前节点的所有子元素 |
descendant | 选取当前节点的所有后代元素(子、孙等) |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身 |
following | 选取文档中当前节点的结束标签之后的所有节点 |
namespace | 选取当前节点的所有命名空间节点 |
parent | 选取当前节点的父节点 |
preceding | 选取文档中当前节点的开始标签之前的所有节点 |
preceding-sibling | 选取当前节点之前的所有同级节点 |
self | 选取当前节点 |
following | 选取文档中当前节点的结束标签之后的所有节点 |
示例
符号 | 意义 |
---|---|
child::book | 选取所有属于当前节点的子元素的 book 节点 |
attribute::lang | 选取当前节点的 lang 属性 |
child:😗 | 选取当前节点的所有子元素 |
attribute:😗 | 选取当前节点的所有属性 |
child::text() | 选取当前节点的所有文本子节点 |
child::node() | 选取当前节点的所有子节点 |
descendant::book | 选取当前节点的所有 book 后代 |
ancestor::book | 选择当前节点的所有 book 先辈 |
ancestor-or-self::book | 选取当前节点的所有 book 先辈以及当前节点(如果此节 |
child:😗/child::price | 选取当前节点的所有 price 孙节点 |