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

如何用XPath查找包含指定文本节点的直接子元素?

解决XPath提取包含指定文本的子元素问题

我来帮你搞定这个XPath的问题!你的需求是提取父<div>下所有直接子元素中,不管文本是直接在自身节点还是嵌套在子节点里,只要包含文本“A”的节点对吧?

先分析你之前的表达式为啥不行

  • 表达式 ./*/*[contains(text(), 'A')]:这个是在找父节点的子元素的子节点(比如第一个<div>里的文本节点,或者<p>里的<b>标签),返回的是这些底层节点,而不是你要的<div>和<p>这两个直接子元素。
  • 表达式 ./*[./*[contains(text(), 'A')]]:这个只匹配那些**有子节点包含“A”**的直接子元素(也就是<p>),但漏掉了自身直接包含“A”的那个<div>,所以只能拿到一半结果。

正确的XPath表达式

./*[contains(., 'A')]

为啥这个能行?

这里的.代表当前节点的字符串值——也就是把该节点及其所有后代节点的文本内容拼接在一起后的结果。不管文本是直接写在<div>里,还是嵌套在<p>的<b>子节点里,整个元素的文本内容里只要包含“A”,就会被这个表达式匹配到。

用这个表达式测试你的HTML结构:

  • 第一个直接子元素<div>A</div>的字符串值是“A”,会被匹配;
  • 第二个直接子元素<p><b>A</b></p>的字符串值也是“A”,会被匹配;
  • 第三个直接子元素<span>B</span>的字符串值是“B”,不会被匹配。
    完全符合你预期的返回结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:59:51