import xml.etree.ElementTree as ET
tree: ET = ET.parse(file)
tree.find('.//ns1:tag/@someattribute', ns)
导致 {KeyError}'@',据我所知,xpath 表达式是正确的,元素树中是否有任何方法可以直接使用 xpath 而不是使用 获取属性值。属性
最佳答案
XPath 表达式在语法上是正确的。问题是 find()
只定位元素。它不能用于查找属性。
这应该有效:
attr = tree.find('.//ns1:tag', ns).get('someattribute')
与 lxml ,您可以使用 xpath()
方法(返回一个列表):
attr = tree.xpath('.//ns1:tag/@someattribute', namespaces=ns)[0]
关于python - 元素树python中具有属性的xpath表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077551/