You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lxml XPATH多条件查询XML节点报invalid predicate错误如何解决

错误原因
  • XPath语法错误:你编写的路径.//*RegistroBdpo不符合规范,*是节点通配符,不能直接与标签名拼接使用,多余的*导致谓词无法正常解析,触发invalid predicate报错。
  • 次要优化点:XPath表达式用双引号做值匹配时,外层用单引号包裹整个字符串即可,不需要额外转义双引号,可读性更高。
修正后代码
import lxml.etree as ET
  
r = ET.parse(xml_file_location)

# 移除路径中多余的*
xpath_exp = './/RegistroBdpo[TipoEvento="5" or TipoEvento="6"][PerdaRaizNumeroEvento="00250"]'
res = [ reg.find('IdInternaEvento').text for reg in r.iterfind(xpath_exp) ]

你提供的示例XML中,符合筛选条件的结果为Pasta 95。

内容的提问来源于stack exchange,提问作者Luiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 06:06:03