在使用to_html时,如何避免在Nokogiri中打印漂亮的HTML?

时间:2013-01-22 13:49:31

标签: ruby ruby-on-rails-3 nokogiri pretty-print

我正在使用Nokogiri和Ruby on Rails v2.3.8。

在使用to_html时,有没有办法避免在Nokogiri中进行漂亮打印?

我读到to_xml允许使用to_xml(:indent => 0)完成此操作,但这不适用于to_html

现在我正在使用gsub删除换行符。 Nokogiri是否提供任何选择?

2 个答案:

答案 0 :(得分:4)

我使用.to_html(save_with: 0)解决了这个问题?

2.1.0 :001 > require 'nokogiri'
 => true
2.1.0 :002 >  doc = Nokogiri::HTML.fragment('<ul><li><span>hello</span> boom!</li></ul>')
 => #<Nokogiri::HTML::DocumentFragment:0x4e4cbd2 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x4e4c97a name="ul" children=[#<Nokogiri::XML::Element:0x4e4c47a name="li" children=[#<Nokogiri::XML::Element:0x4e4c240 name="span" children=[#<Nokogiri::XML::Text:0x4e4c0a6 "hello">]>, #<Nokogiri::XML::Text:0x4e4c86c " boom!">]>]>]>
2.1.0 :003 > doc.to_html
 => "<ul><li>\n<span>hello</span> boom!</li></ul>"
2.1.0 :004 > doc.to_html(save_with: 0)
 => "<ul><li><span>hello</span> boom!</li></ul>"

测试:nokogiri(1.6.5)+ libxml2 2.7.6.dfsg-1ubuntu1 + ruby​​ 2.1.0p0(2013-12-25 revision 44422)[i686-linux]

答案 1 :(得分:2)

您可以使用Nokogiri::HTML.fragment()代替Nokogiri::HTML()。当您执行to_html时,它不会添加换行符,DOCTYPE标头或以任何方式使其“漂亮”。