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

如何用XPath组合表达式验证子节点文本依次包含Foo和Bar

组合XPath表达式验证文本节点顺序与内容

当然可以用一个组合XPath表达式完成验证,不用分开查询两个节点。针对你的HTML结构,有两种实用的表达式可选:

思路1:匹配父元素的文本节点序列

直接定位同时满足“第一个子文本节点包含Foo、第二个子文本节点包含Bar”的父元素,只要该元素存在,就说明两个条件都成立:

XPath表达式:

//*[text()[1][contains(.,'Foo')] and text()[2][contains(.,'Bar')]]

对应的C#代码可以简化为:

var validParent = DocumentNode.SelectSingleNode(@"//*[text()[1][contains(.,'Foo')] and text()[2][contains(.,'Bar')]]");
validParent.Should().NotBeNull();

这里text()[1]会选取当前元素的第一个直接子文本节点,text()[2]选取第二个,自动忽略<br>这类元素节点,刚好匹配你的HTML结构。

思路2:严格匹配节点间的结构关系

如果需要更严格验证节点顺序(比如Foo文本后必须紧跟<br>,再是Bar文本),可以用兄弟节点轴来精确匹配:

XPath表达式:

//*[text()[contains(.,'Foo')]/following-sibling::br[1]/following-sibling::text()[1][contains(.,'Bar')]]

这个表达式会定位到包含以下结构的父元素:

  • 一个包含Foo的文本节点
  • 该文本节点的下一个兄弟节点是<br>
  • 这个<br>的下一个兄弟节点是包含Bar的文本节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:10:19