我搜索了文档片段上的文本节点。这有效,如下面的代码段所示:
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()')
可解决问题。
是否存在将两种行为结合起来的查询?
答案 0 :(得分:2)
我没有使用Nokogiri,但在标准XPath中,您应该只能使用union运算符:
doc.xpath('.//text() | text()')