在Python中使用XPath查询XML

14 投票
3 回答
30796 浏览
提问于 2025-04-15 13:46

在用Python处理XML文件的时候,能不能用XPath查询呢?我现在用的是minidom这个库,但它不支持这个功能。有没有其他的模块可以做到这一点?

3 个回答

3

ElementTree 是一个包含在 Python 中的库。在 2.6 及更早的版本中,它的 xpath 功能比较弱,但在 2.7 及以上版本中有了很大的提升

import xml.etree.ElementTree as ET
root = ET.parse(filename)
result = ''

# How to make decisions based on attributes even in 2.6
for elem in root.findall('.//child/grandchild'):
    if elem.attrib.get('name') == 'foo':
        result = elem.text
        break
3

我最喜欢的Python XML处理库是 lxml,因为它是基于libxml2的,所以也支持完整的XPath功能。

还有一个叫 4Suite 的库,它更像是一个纯Python的解决方案。

11

http://docs.python.org/library/xml.etree.elementtree.html

etree支持XPath查询,这和lxml一样。

etree是Python自带的库,但lxml的速度更快。

撰写回答