使用ElementTree返回XPath属性值

时间:2012-08-31 04:53:09

标签: python xml elementtree

我想用这种结构来评估XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<Service_name version="3.3.0">
...

其中Service_name标记名称不是常量字符串,而version属性是必需的。

为此目的,这个xpath表达式:/*[1]/@version可以用任何xpath处理器进行评估,但我无法用Python ElementTree来计算。

例如:

import xml.etree.ElementTree as ET
doc = ET.parse('sample.xml')
v = find('/*[1]/@version').text

提出KeyError: '@'

我尝试了类似的组合,但没有一个有效。

如何使用ElementTree从上面的示例文档中获取版本号?

2 个答案:

答案 0 :(得分:2)

ElementTree使用自己的路径语法,它或多或少是xpath的一个子集。如果您希望ElementTree兼容库具有完整的xpath支持,请尝试lxml

答案 1 :(得分:0)

虽然它不是XPath作为问题名称,但这似乎是一种方式:

doc.getroot().get('version')