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 孙节点
posted @ 2018-04-25 11:05  HugoRun  阅读(159)  评论(0编辑  收藏  举报