0

次のような 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

私は何を間違っていますか?

4

1 に答える 1

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>
于 2012-07-05T18:17:52.230 に答える