Nokogiri :: HTML#内容中HTML元素之间的空格

时间:2013-11-12 17:30:55

标签: ruby nokogiri

当我运行时

Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>').content

我明白了

"HelloGood Sir"

有没有办法通过Nokogiri的API获得以下内容?

"Hello Good Sir"

2 个答案:

答案 0 :(得分:6)

require 'nokogiri'

doc = Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>')

# below will fetch all text nodes irrespective of any tag,from the current document.
doc.xpath("//text()").map(&:text)
# => ["Hello", "Good Sir"]

doc.xpath("//text()").map(&:text).join(" ")
# => "Hello Good Sir"

# below will fetch all text nodes which are wrapped inside the p tag,
# from the current document.
doc.xpath("//p").map(&:text)
# => ["Hello", "Good Sir"]

doc.xpath("//p").map(&:text).join(" ")
# => "Hello Good Sir"

答案 1 :(得分:4)

像阿鲁普指出的那样

doc = Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>')
doc.css('p').map(&:text).join(" ") #=> "Hello Good Sir"