Python XPath 语法介绍

2023-04-17 00:00:00 python 语法 介绍

XPath是一种用于在XML文档中定位节点的语言。Python中的XPath使用lxml库实现。下面介绍XPath的语法,以及Python中如何使用XPath提取XML文档中的信息。

XPath语法

XPath使用路径表达式(Path Expression)来定位节点,路径表达式由一系列的位置路径(Location Path)和选择器(Node Test)构成。下面是XPath的一些常用语法:

  • /: 用于从根节点开始选择节点,例如:/bookstore/book
  • //:用于选择文档中的任意位置的节点,例如://book
  • .:当前节点,例如:./author
  • ..:父节点,例如:../book
  • @:选取属性,例如:/bookstore/book/@category
  • []:用于筛选节点,例如:/bookstore/book[price>35.00],这个表示选择所有价格大于35.00的book节点。

Python中使用XPath提取信息

Python中可以使用lxml库的XPath方法实现XPath的定位和提取。首先需要将XML文档读入内存中,然后使用XPath方法选择节点,最后使用节点对象的方法获取节点信息。下面是一个例子:

# 导入lxml库
from lxml import etree

# 定义XML文档
xml = '''
<bookstore>
  <book category="children">
    <title lang="en">pidancode.com</title>
    <author>Tom</author>
    <year>2008</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title>皮蛋编程</title>
    <author>Jane</author>
    <year>2009</year>
    <price>46.95</price>
  </book>
  <book category="web">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>
'''

# 把XML文档读入内存中
doc = etree.fromstring(xml)

# 使用XPath选择节点
title = doc.xpath('/bookstore/book[1]/title')
price = doc.xpath('/bookstore/book[2]/price')

# 打印节点信息
print(title[0].text)
print(price[0].text)

上述代码中,首先定义了一个XML文档,然后使用etree.fromstring方法将XML文档读入内存中。接着使用XPath选择了第一个book节点的title节点和第二个book节点的price节点,最后打印了这些节点的text值。

在实际应用中,XPath往往用来提取XML文档中的信息或者匹配特定的节点。XPath使用灵活,可以实现复杂的节点路径定位和信息提取。

相关文章