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