0

我正在使用以下 python 代码进行 xpath 属性查找,但出现错误:
selector.append(ops[token[0]](next, token)) KeyError: '@'
Just using the starndard python2.7 release没有额外的模块

xml 文件如下所示:

<rule-set>
<rule name="firstRule" salience="3" />
<rule name="secondRule" salience="5" />
</rule-set>

我的代码如下所示:

import xml.etree.ElementTree as ET
fp = open("./rules.xml", "r")
elementTree = ET.parse(fp)
e = elementTree.findall('rule') #looking up element, this works
for i in e:
    print i.attrib
e = elementTree.findall('rule/@salience') #directly looking up attribute fails
for i in e:
    print i
print 'all done'

我有点困惑,...我认为 xpath1.0 会支持这个 xpath 查找,或者我做错了什么?

4

1 回答 1

0

文档

该模块为在树中定位元素的 XPath 表达式提供了有限的支持。目标是支持缩写语法的一小部分;完整的 XPath 引擎超出了模块的范围。

xml.etree模块不允许直接使用它的xpath 语法选择属性,只能选择具有某些属性的元素。

如果您想要更完整的 xpath 支持,您应该查看lxml.etree

于 2013-04-12T00:13:08.720 回答