为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2021-11-30 16:56:36
我对这个领域很陌生,所以我相信这只是显而易见的事情。我正在尝试更改一个 python 脚本,以便它以不同的方式找到一个节点,但我收到一个“无效谓词”错误。import xml.etree.ElementTree as ETtree = 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 标签。实际上,我想搜索标签的组合,所以我排列了一个更复杂的表达式,但我无法让简单的表达式起作用!
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

问题中的代码在使用 Python 3.7 时有效。如果谓词中等号前后的空格被删除,它也适用于早期的 Python 版本。

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

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


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信