参考资料

  1. 正则表达式语法速查
  2. xpath路径如何查找
  3. XPath 使用路径表达式在 XML 文档中选取节点
  4. XPath定位元素技巧
  5. XPath 有七种类型的节点
  6. 正则表达式测试工具有哪些
  7. XPath 标准函数
  8. 正则生成代码有哪些

XPath 简介

XPath(XML Path Language)是 W3C 标准,用于在 XML 文档中导航和查询节点。它提供了一种路径表达式语法来定位 XML 文档中的元素、属性、文本等。

主要属性

  1. 路径表达式:用于定位 XML 节点。

  2. 节点类型:元素、属性、文本、命名空间等。

  3. 轴(Axes):定义节点与当前节点的关系。

  4. 运算符和函数:支持逻辑、比较和数值运算。

基本语法

  1. 节点选择

    • /:从根节点开始。

    • //:选择文档中所有匹配节点。

    • .:当前节点。

    • ..:父节点。

    • @:选择属性。

  2. 谓语(Predicates)

    • 用于过滤节点,写在方括号内,如 //book[price>35]

  3. 通配符

    • *:匹配任何元素节点。

    • @*:匹配任何属性节点。

  4. 运算符

    • |:合并多个路径结果。

    • +, -, *, div:算术运算。

    • =, !=, <, >:比较运算。

  5. 函数

    • text():获取节点文本。

    • contains():检查字符串包含。

    • count():计算节点数量。

用法示例

  1. 选择所有 book 节点

    //book
  2. 选择 book 节点的 title 子元素

    //book/title
  3. 选择 price 大于 35 的 book 节点

    //book[price>35]
  4. 选择带有 category 属性的 book 节点

    //book[@category]
  5. 选择 title 包含 "XPath" 的 book 节点

    //book[contains(title, 'XPath')]
  6. 选择第一个 book 节点

    //book[1]
  7. 选择 price 和 title

    //book/title | //book/price
  8. 选择父节点

    //title/..

轴(Axes)示例

  1. 子节点

    child::book
  2. 属性节点

    attribute::category
  3. 祖先节点

    ancestor::book
  4. 后续兄弟节点

    following-sibling::book

函数示例

  1. 计算 book 节点数量

    count(//book)
  2. 获取字符串长度

    string-length(//book/title)
  3. 求和

    sum(//book/price)

完整 XML 示例

<bookstore>
  <book category="web">
    <title lang="en">XPath Guide</title>
    <price>30</price>
  </book>
  <book category="cooking">
    <title lang="en">Recipe Book</title>
    <price>40</price>
  </book>
</bookstore>

对应 XPath 查询

  1. 选择所有书名

    //book/title
  2. 选择价格大于 35 的书名

    //book[price>35]/title
  3. 选择 category 为 "web" 的书名

    //book[@category='web']/title