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

如何在XPath位置步骤限制匹配数或选择匹配索引?

解决XPath选择全局第一个匹配元素的问题

要实现你要的效果,直接用括号调整表达式优先级就行,正确的XPath表达式是:

(//foo//bar)[1]/target

为什么这个写法有效?

  • 括号里的//foo//bar会先找出所有位于<foo>节点下(无论中间隔多少层未知名称节点)的<bar>元素,返回一个完整的节点集合。
  • [1]作用在整个括号的结果上,会从这个全局集合里取第一个匹配的<bar>节点。
  • 最后选取该<bar>节点下的所有<target>子元素,正好得到你需要的<target>one</target>和<target>two</target>。

原写法失效的原因

你之前用的//foo//bar[1],这里的[1]是针对每个<bar>的父节点生效——意思是“找到每个父节点下的第一个<bar>”,所以每个<blah>(或其他未知名称的中间节点)下面的第一个<bar>都会被选中,自然会返回两组<target>。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:25:20