参考资料

  1. XPath 节点关系
  2. XPath定位元素技巧
  3. XPath 选取未知节点
  4. xpath中的节点有多重类型不包括
  5. 常用正则表达式
  6. XPath 在 XSLT 中使用
  7. 正则表达式语法速查
  8. 正则表达式测试工具有哪些

XPath 基本语法

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元素数量