如何使用 xpath 查找包含具有指定文本的节点的直接 children?

How to find direct children which contain nodes with specified text with xpath?

我需要提取所有 children 节点,其中包含一些文本。 Html 结构可能如下:

<div>
  <div>
    A
  </div>
  <p>
    <b>A</b>
  </p>
  <span>
    B
  </span>
</div>

我需要提取具有 "A" 个文本的 child 个节点。它应该 return divp 节点

我尝试了以下 xpath:

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

但第一个 return 仅 div 带有 "A" 文本,第二个 return 仅 p 带有 "A"文字

是否可以构建 xpath 来 return 两者 children?

包含 "A" 文本的节点可能位于 child 节点中的任何级别

如果您需要 returns 两个子节点的 XPath,请尝试使用

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

我怀疑 contains() 在这里是错误的,除非你真的想要 select 一个值为 "HAT" 的节点以及一个值为 "A".[=11 的节点=]

尝试

*/*[normalize-space(.)='A']