【发布时间】:2019-03-08 17:06:14
【问题描述】:
我对这个领域很陌生,所以我确信这只是显而易见的事情。我正在尝试更改 python 脚本,以便它以不同的方式找到节点,但出现“无效谓词”错误。
import xml.etree.ElementTree as ET
tree = ET.parse("/tmp/failing.xml")
doc = tree.getroot()
thingy = doc.find(".//File/Diag[@id='53']")
print(thingy.attrib)
thingy = doc.find(".//File/Diag[BaseName = 'HTTPHeaders']")
print(thingy.attrib)
这应该两次找到相同的节点,但第二次找到错误。这是 XML 的摘录:
<Diag id="53">
<Formatted>xyz</Formatted>
<BaseName>HTTPHeaders</BaseName>
<Column>17</Column>
我希望我没有削减太多。基本上,用“@id”找到它是可行的,但我想搜索那个 BaseName 标记。
实际上,我想搜索标签的组合,所以我排列了一个更复杂的表达式,但我无法让简单的表达式工作!
【问题讨论】:
-
我可以用 Python 2.7 重现错误,但不能用 Python 3.7。
-
“我有一个更复杂的表达式” - 你可能想改用lxml; xpath support in ElementTree 非常有限。
标签: python xml xpath elementtree