参考资料

  1. XPath 标准函数
  2. 正则生成代码有哪些
  3. XPath 使用路径表达式在 XML 文档中选取节点
  4. xpath路径如何查找
  5. XPath 谓语(Predicates)
  6. XPath 节点关系
  7. XPath 选取若干路径
  8. XPath 是 XML 的查询语言

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

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。