如何找到包含带有xpath指定文本的节点的直接子节点?

时间:2018-04-27 09:41:19

标签: xpath nokogiri

我需要提取所有具有某些文本节点的子节点。 Html结构可能如下:

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

我需要提取具有&#34; A&#34;文本。它应该返回divp个节点

我尝试了以下xpath:

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

但第一个只返回div&#34; A&#34;文本和第二个只返回p&#34; A&#34;文本

是否可以构造将返回两个子节点的xpath?

节点包含&#34; A&#34;文本可能位于子节点中的任何级别

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我怀疑contains()在这里是错误的,除非你真的想要选择一个值为“HAT”的节点以及一个值为“A”的节点。

尝试

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