使用 ElementTree 查找节点 - 无效谓词
Using ElementTree to find a node - invalid predicate
我对这个领域还很陌生,所以我确信这很明显。我正在尝试更改 python 脚本,以便它以不同的方式找到节点,但我收到 "invalid predicate" 错误。
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']")
我对这个领域还很陌生,所以我确信这很明显。我正在尝试更改 python 脚本,以便它以不同的方式找到节点,但我收到 "invalid predicate" 错误。
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']")