参考资料

  1. XPath 轴(Axes)
  2. XPath 选取节点
  3. xpath路径如何查找
  4. 正则表达式语法速查
  5. XPath 选取若干路径
  6. XPath 运算符
  7. XPath 节点关系
  8. XPath 谓语(Predicates)

XPath 详细介绍

XPath(XML Path Language)是一种用于在 XML 文档中定位节点的查询语言。它通过路径表达式选择 XML 文档中的节点或节点集。

基本概念

  1. 节点(Node):XML 文档中的元素、属性、文本等。

  2. 路径表达式:用于指定节点位置的表达式。

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

  4. 谓语(Predicate):用于过滤节点。

路径表达式语法

  • /:从根节点开始。

  • //:从当前节点开始递归搜索。

  • .:当前节点。

  • ..:父节点。

  • @:选择属性。

常用表达式

  1. 选择节点

    • bookstore:选择所有 bookstore 节点。

    • /bookstore:选择根元素 bookstore。

    • bookstore/book:选择 bookstore 的子元素 book。

    • //book:选择所有 book 节点。

  2. 选择属性

    • //@lang:选择所有名为 lang 的属性。

    • //book[@lang]:选择所有带有 lang 属性的 book 节点。

  3. 谓语(过滤)

    • /bookstore/book[1]:选择第一个 book 元素。

    • /bookstore/book[last()]:选择最后一个 book 元素。

    • /bookstore/book[price>35]:选择 price 大于 35 的 book 元素。

  4. 通配符

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

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

  5. 轴(Axis)

    • child::book:选择当前节点的 book 子节点。

    • attribute::lang:选择当前节点的 lang 属性。

    • ancestor::book:选择当前节点的 book 祖先节点。

示例 XML 文档

<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <price>29.99</price>
  </book>
</bookstore>

示例 XPath 表达式

  1. 选择所有 book 节点:

    //book
  2. 选择第一个 book 节点的 title:

    /bookstore/book[1]/title
  3. 选择价格大于 29 的 book 节点:

    //book[price>29]
  4. 选择 lang 属性为 "en" 的 title 节点:

    //title[@lang='en']
  5. 选择所有 book 节点的 price 子节点:

    //book/price
  6. 选择 bookstore 的所有子节点:

    /bookstore/*
  7. 选择所有具有 category 属性的 book 节点:

    //book[@category]
  8. 选择第二个 book 节点的 author:

    /bookstore/book[2]/author

用法说明

  • XPath 通常用于 XSLT、XQuery 和其他 XML 处理技术中。

  • 在编程语言(如 Python、Java)中,可以使用库(如 lxml、javax.xml.xpath)执行 XPath 查询。

  • XPath 表达式区分大小写。