我可以使用什么XPath来获取第一段节点之后(包括第一段节点)的所有文本节点?

use*_*623 5 ruby xpath nokogiri

我是Nokogiri和Ruby的新手。

我想获取文档中所有节点的文本,从第一段节点开始,包括第一段节点。

我用XPath尝试了以下操作,但无济于事:

 puts page.search("//p[0]/text()[next-sibling::node()]")
Run Code Online (Sandbox Code Playgroud)

这行不通。我必须改变什么?

Jen*_*rat 5

您必须找到该<p/>节点并返回text()内部和后续的所有节点。根据Nokogiri具有的XPath功能,使用以下查询之一:

//p[1]/(descendant::text() | following::text())
Run Code Online (Sandbox Code Playgroud)

如果不起作用,请改用此方法,它需要两次查找第一段,并且可能会有点,但可能会更慢一些:

(//p[1]/descendant::text() | //p[1]/following::text())
Run Code Online (Sandbox Code Playgroud)

可能不受支持的XPath 2.0替代方案是:

//text()[//p[1] << .]
Run Code Online (Sandbox Code Playgroud)

这意味着“所有文本节点都<p/>在文档中的第一个节点之后”。