我有一些HTML:
<span class="foo">foo bar <a href="http://example.com">example</a> baz</span>
我想把它变成一个字符串,如:
foo bar http://example.com baz
我正在使用Nokogiri,我有类似的东西:
doc.css('.foo').each do |message|
message.css('a').map {|link| link.replace(link['href'])}
message.xpath('.//text()').map do |m|
p m.text
end
end
但这似乎证明了:
foo bar
http://example.com
baz
我做错了什么?
答案 0 :(得分:1)
p m.text
将在每行文本后插入换行符,但文档本身没有任何换行符。只需打印出message.text
,就可以得到你想要的东西。
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::HTML.fragment(DATA.read)
doc.css('.foo').each do |message|
message.css('a').each {|link| link.replace(link['href'])}
puts message.text # prints "foo bar http://example.com baz"
end
__END__
<span class="foo">foo bar <a href="http://example.com">example</a> baz</span>