使用XPath选择祖先的第二个孩子

时间:2020-10-22 16:38:26

标签: html dom xpath

我需要从HTML页面获取一些文本。我试图避免依赖标记名或类,因为它们会发生变化。

从包含文本“ Hello”的元素开始,我正在寻找存储在祖父母的第二个元素中的文本。

<...>
  <...>
    <...>
      Hello
    </...>
  </..>
  <...>       <!-- UNCLE -->
    <...>
      World   <!-- I need this! -->
    </...>
  <...>
</...>

我尝试使用带有//*[text()=="Hello")]/../..[2]的XPath来获取元素UNCLE,但是它不起作用。似乎[]无法应用于..

如何获取节点的祖父母的第二个孩子?

是否有更好的方法来检索我要查找的文本,而不是类似的XPath查询和document.evaluate?

1 个答案:

答案 0 :(得分:0)

尝试一下:

//*[*[1][*[normalize-space()='Hello']]]/*[2]/*

它将选择包含“世界”的元素。

它正在测试第一个孩子的后代的值,然后选择第二个孩子的后代。