参考资料

  1. xpath路径如何查找
  2. xpath多个相同元素怎么定位
  3. XPath 谓语(Predicates)
  4. XPath定位元素技巧
  5. xpath定位方法有哪些
  6. XPath 路径表达式
  7. XPath 节点关系
  8. 正则表达式语法速查

XPath 是 W3C 标准

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