如何在python中使用xpath列出属性值

时间:2013-04-11 23:42:34

标签: python xpath

我正在使用下面的python代码进行xpath属性查找,但收到错误:
selector.append(ops [token [0]](next,token)) KeyError:'@'
只使用没有额外模块的starndard python2.7版本

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查找,或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

来自docs

  

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

xml.etree模块不允许直接使用xpath syntax选择属性,只选择具有特定属性的元素。

如果您需要更完整的xpath支持,则应该查看lxmletree