doc = Nokogiri::HTML(open(url)).xpath("//*")
.xpath("//*[br]/text()[string-length(normalize-space()) != 0]")
.wrap("<span></span>")
puts doc
テキストを返すだけです...指定されたxpath要素をラップした完全なhtmlソースを期待していました。
試す
doc = Nokogiri::HTML(open(url)).xpath("//*")
.xpath("//*[br and text()[string-length(normalize-space()) != 0]]")
.wrap("<span></span>")
puts doc
XPath が行うことは、空でないテキスト ノードをフェッチすることです。定義上、マークアップは含まれていません。
対照的に、私の XPath は、少なくとも 1<br>
つの空でないテキスト ノードと、少なくとも 1 つの空でないテキスト ノードを含むすべてのノードをフェッチします。