参考资料

  1. XPath定位元素技巧
  2. XPath 选取若干路径
  3. XPath 运算符
  4. xpath路径如何查找
  5. XPath 选取未知节点
  6. XPath 路径表达式
  7. XPath 是 XML 的查询语言
  8. 常用正则表达式

XPath 使用路径表达式在 XML 文档中选取节点

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 表达式区分大小写。