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