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

Python中etree.XPath使用|运算符出现语法错误的排查与修复

错误原因

你的XPath表达式语法错误是因为Python的lxml.etree使用XPath 1.0标准,而你写的//bridge-domain/(a|b)这种括号内的联合选择语法是XPath 2.0及以上才支持的特性。XPath 1.0不允许在路径中间通过括号分组后用|合并子节点路径,必须将每个目标节点的完整路径明确写出。

修正方法

把每个需要选择的子节点路径都基于父节点//bridge-domain完整展开,再用|运算符连接所有完整路径。

修正后的示例

核心错误表达式的修正

原错误核心表达式:

XPATH = '//bridge-domain/(bridge-domain-group-name|bridge-domain-name)'

修正后:

XPATH = '//bridge-domain/bridge-domain-group-name | //bridge-domain/bridge-domain-name'

完整表达式的修正

原完整表达式修正后:

XPATH = '//bridge-domain/bridge-domain-group-name | //bridge-domain/bridge-domain-name | //bridge-domain/bridge-acs/bridge-ac/interface-name | //bridge-domain/bridge-acs/bridge-ac/attachment-circuit/state | //bridge-domain/bridge-access-pws/bridge-access-pw/neighbor | //bridge-domain/bridge-access-pws/bridge-access-pw/pseudowire/state'
验证代码
import lxml.etree as etree

XPATH = '//bridge-domain/bridge-domain-group-name | //bridge-domain/bridge-domain-name | //bridge-domain/bridge-acs/bridge-ac/interface-name | //bridge-domain/bridge-acs/bridge-ac/attachment-circuit/state | //bridge-domain/bridge-access-pws/bridge-access-pw/neighbor | //bridge-domain/bridge-access-pws/bridge-access-pw/pseudowire/state'

try:
    xpath_obj = etree.XPath(XPATH)
    print("XPath expression compiled successfully.")
except etree.XPathSyntaxError as e:
    print(f"XPath syntax error: {e}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:27:08