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

如何简化相同属性不同值的XPath表达式?

简化相同属性多值匹配的XPath表达式

你尝试的//*[(@name)='first' or 'firstName']不符合XPath语法,无法达到预期效果——因为or运算符两侧必须是布尔表达式,单独的字符串'firstName'会被当作true处理,最终表达式会匹配所有元素,完全偏离需求。

下面是两种可行的简化方案,根据你使用的XPath版本选择:

XPath 2.0+ 版本(推荐)

如果环境支持XPath 2.0或更高版本,可以直接用序列匹配,写法最简洁,完全避免重复书写属性名:

//*[@name=('first', 'firstName')]

这个表达式会精准匹配所有name属性值为'first'或'firstName'的元素。

XPath 1.0 版本

如果只能使用XPath 1.0(很多旧工具/框架只支持1.0),无法完全省略重复的@name,但可以选择以下两种方式:

  • 保留清晰的or写法(这也是最常用的方式,可读性高):
    //*[@name='first' or @name='firstName']
    
  • 当需要匹配的属性值较多时,可借助contains和分隔符模拟多值匹配(注意:属性值不能包含你选用的分隔符,比如这里的|):
    //*[contains('|first|firstName|', concat('|', @name, '|'))]
    
    这种写法减少了重复的@name,但可读性稍差,且存在误匹配风险(比如若有元素name='firstX'也会被匹配),仅适合值较多的场景。

内容的提问来源于stack exchange,提问作者jakub.bitman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:02:09