📜  XPath 简介(1)

📅  最后修改于: 2023-12-03 15:21:19.295000             🧑  作者: Mango

XPath 简介

什么是 XPath?

XPath (XML Path Language) 是一种用于选择 XML 文档中特定部分的语言。它可以用于定位 XML 文档中的任意元素、属性、文本等内容。XPath 作为一种标准规范,由 W3C 组织维护。

XPath 的语法

XPath 路径表达式语法如下:

  • nodename:选择此节点的所有子节点。
  • /:从根节点开始选择。
  • //:选择匹配的任何节点。
  • .:选择当前节点。
  • ..:选择当前节点的父节点。
  • @:选择属性。

例如:选择根节点下所有名称为 book 的元素节点,可以使用以下 XPath 表达式:

/bookstore/book
XPath 使用示例

假设我们有如下的 XML 文档:

<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
  1. 选取 bookstore 元素的所有子节点:
/bookstore/*
  1. 选取 book 元素的所有子节点:
//book/*
  1. 选取所有带有 category 属性的 book 元素:
//book[@category]
  1. 选取价格大于 30 的所有 book 元素:
//book[price>30.00]
  1. 选取 bookstore 元素下的所有 title 元素:
/bookstore//title
  1. 选取 bookstore 元素下的所有 title 元素并且 lang 属性值为 en:
/bookstore/title[@lang='en']
使用 XPath 的方式

在使用 XPath 时,可以通过编写代码让程序自动解析 XML 文档,并执行相应的 XPath 表达式,从而得到想要的结果。对于不同编程语言,使用 XPath 的方式也可能有所不同。下面是 Python 中使用 XPath 的一个例子:

from lxml import etree

if __name__ == '__main__':
    xml = etree.parse('books.xml')
    result = xml.xpath('//bookstore/book/title/text()')
    for title in result:
        print(title)

这段代码的作用是读取文件 books.xml 中的 title 标签的文本内容,输出所有 title 的值。

结语

XPath 作为一种灵活、易用的 XML 查询语言,可以在 XML 处理中起到很大的作用。掌握 XPath 的语法和使用方法,可以使程序员更加高效地处理 XML 数据。