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

为何XPath表达式//a/@href[contains(text(),"stack")]无法生效?

为什么你的第二个XPath表达式无法生效?

问题出在对XPath中属性节点和text()的理解上:

  • @href是属性节点,它本身没有子文本节点——text()这个轴是用来选取元素节点的直接子文本节点的,属性节点不存在这类子节点。所以contains(text(),"stack")相当于在找一个不存在的节点内容,自然匹配不到结果。

  • 要判断属性节点的字符串值,直接用.指代属性节点自身即可。把表达式改成//a/@href[contains(.,"stack")]就能正常匹配包含"stack"的href属性了。

对比两个有效表达式:

  • //a[contains(@href, "stack")]/@href:先筛选出href属性包含"stack"的<a>元素,再提取它的href属性
  • //a/@href[contains(.,"stack")]:先提取所有<a>的href属性,再筛选其中字符串值包含"stack"的属性节点

这两种写法都能得到你想要的结果,后者是你想要的写法的正确修正版。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:13:09