参考资料

  1. XPath 运算符
  2. xpath多个相同元素怎么定位
  3. xpath路径如何查找
  4. XPath 使用路径表达式在 XML 文档中选取节点
  5. XPath 有七种类型的节点
  6. XPath 节点
  7. XPath 基本语法
  8. 常用正则表达式

XPath 基本语法

简介

XPath (XML Path Language) 是一种用于在XML文档中查找信息的语言,可用于遍历XML文档中的元素和属性。

基本语法

节点选择

  • / 从根节点选取

  • // 从匹配选择的当前节点选择文档中的节点,不考虑位置

  • . 选取当前节点

  • .. 选取当前节点的父节点

  • @ 选取属性

谓语(Predicates)

用于查找特定节点或包含特定值的节点,写在方括号中

  • [1] 第一个元素

  • [last()] 最后一个元素

  • [position()<3] 前两个元素

  • [@lang] 拥有lang属性的元素

  • [@lang='en'] lang属性值为'en'的元素

通配符

  • * 匹配任何元素节点

  • @* 匹配任何属性节点

  • node() 匹配任何类型的节点

运算符

  • | 计算两个节点集

  • + - * div 算术运算

  • = != < > <= >= 比较运算

  • or and 逻辑运算

常用表达式示例

  1. 选择所有节点://*

  2. 选择所有book节点://book

  3. 选择根元素bookstore:/bookstore

  4. 选择所有title属性为"XML"的book元素://book[@title='XML']

  5. 选择bookstore的所有book子元素:/bookstore/book

  6. 选择所有price元素,且price值大于35://price[.>35]

  7. 选择book元素的title和author子元素://book/title | //book/author

  8. 选择具有lang属性的title元素://title[@lang]

  9. 选择第二个book元素://book[2]

  10. 选择最后一个book元素://book[last()]

轴(Axes)

定义相对于当前节点的节点集:

  • ancestor 所有祖先节点

  • ancestor-or-self 所有祖先节点及当前节点

  • attribute 当前节点的所有属性

  • child 当前节点的所有子节点

  • descendant 当前节点的所有后代节点

  • following 文档中当前节点之后的所有节点

  • parent 当前节点的父节点

  • preceding 文档中当前节点之前的所有节点

示例:

  • //book/child::* 选择book的所有子节点

  • //title[@lang='en']/ancestor::book 选择lang属性为en的title元素的所有book祖先

函数

XPath包含许多内置函数:

  • text() 获取节点文本内容

  • contains(string1, string2) 判断string1是否包含string2

  • starts-with(string1, string2) 判断string1是否以string2开头

  • count(node-set) 返回节点集数量

  • sum(node-set) 返回节点集数值总和

  • concat(string1, string2, ...) 连接字符串

示例:

  • //title[contains(text(),'XML')] 选择文本包含"XML"的title元素

  • count(//book) 统计book元素数量