使用ElementTree查找节点 - 无效谓词



我对这个区域非常新,所以我敢肯定这只是明显的。我正在尝试更改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 3.7时起作用。如果删除了谓词中的符号之前和之后的空间,则它还可以与早期的Python版本一起使用。

thingy = doc.find(".//File/Diag[BaseName='HTTPHeaders']")

请参阅https://bugs.python.org/issue31648。

最新更新