XPath语言
XPath语言是一门专门用于在XML文档中查找信息的语言,可以与其他XML解析工具来结合,使用路径表达式来选取XML文档中的节点或者节点集
XPath节点
XPath中的节点类别有
- XML 文档根节点
- 元素节点
- 属性节点
- 处理指令节点
- 注释节点
- 命名空间节点
- 文本节点
语法
XPath语言使用路径表达式来定位XML文档中的节点或节点集
每个XPath表达式是由多个步组成的,多个步之间用斜线分隔
如/mapper/resultMap/id表示的是mapper根元素下resultMap子元素中包含的id子元素
步的语法
步由三部分组成,其语法格式为
1 | 轴::节点测试[限定谓语] |
轴
用于定义所选节点与当前节点之间的结构关系,如父子、后代等
ancestor | 选取当前节点的所有先辈(父、祖父等)。 |
---|---|
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
attribute | 选取当前节点的所有属性,可用@符号代替 |
child | 选取当前节点的所有子元素,默认轴,可省略 |
descendant | 选取当前节点的所有后代元素(子、孙等),可用//代替 |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following | 选取文档中当前节点的结束标签之后的所有节点。 |
namespace | 选取当前节点的所有命名空间节点。 |
parent | 选取当前节点的父节点,可用..代替 |
preceding | 选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling | 选取当前节点之前的所有同级节点。 |
self | 选取当前节点,可用.代替 |
节点测试
用于选取指定轴内部的部分节点
nodename | 从指定轴匹配所有节点中选出具有nodename的节点 |
---|---|
node() | 选择指定轴匹配的所有类型的节点 |
text() | 选择指定轴匹配的所有文本类型的节点 |
comment() | 选择指定轴匹配的所有注释节点 |
processing-instruction | 选择指定轴匹配的所有处理指令节点 |
* | 节点测试的通配符,用于指定不对指定轴进行任何过滤 |
限定谓语
用于对轴和节点测试所匹配的节点集进行进一步限定,每个步中可以接受零个或多个限定谓语,放在方括号中,限定谓语是一个boolean表达式
1 | child:book[position()=1] |