在Nokogiri中搜索文本节点

时间:2014-09-10 07:02:08

标签: xpath nokogiri

我搜索了文档片段上的文本节点。这有效,如下面的代码段所示:

doc = Nokogiri::HTML::DocumentFragment.parse("<p>foo</p>") 
doc.xpath('.//text()')
=> [#<Nokogiri::XML::Text:0x3fe56c8c02a8 "foo">]

但是,我的根节点可能没有像<p>这样的标记,它可能是一个简单的字符串,如"foo"。然后此查询失败。

doc = Nokogiri::HTML::DocumentFragment.parse("foo") 
doc.xpath('.//text()')
=> []

将查询更改为doc.xpath('text()')可解决问题。

是否存在将两种行为结合起来的查询?

1 个答案:

答案 0 :(得分:2)

我没有使用Nokogiri,但在标准XPath中,您应该只能使用union运算符:

doc.xpath('.//text() | text()')