【问题标题】:How do I avoid pretty-printing HTML in Nokogiri while using to_html?使用 to_html 时如何避免在 Nokogiri 中漂亮地打印 HTML?
【发布时间】:2013-01-05 18:34:37
【问题描述】:

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

在使用to_html 时,有没有一种方法可以避免在 Nokogiri 中进行漂亮的打印?

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

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

【问题讨论】:

  • 也许您想使用HTML.fragment()?见[这个问题][1]。 [1]:stackoverflow.com/questions/4723344/…
  • 查看我的正确答案。只需将您的 HTML 加载到 HTML 片段而不是 HTML 文档中,to_html 不会添加格式

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


【解决方案1】:

我使用.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 修订版 44422)[i686-linux]

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您好 Hank,我尝试将以下 HTML 分段“" 这就是我使用 to_html "”我在这里做错了吗?
    • 您使用的是哪个版本的libxml2? \n 可能是由于 libxml2 版本过时
    • 我的 libxml2 版本是 2.8.0+dfsg1-5ubuntu2.1。 fragment() 对我不起作用。还有其他解决问题的方法吗?仍然添加换行符。
    • 这不适用于 nokogiri (1.6.5) + libxml2 2.7.6.dfsg-1ubuntu1 + ruby​​ 2.1.0p0 (2013-12-25 修订版 44422) [i686-linux]。请参阅下面的答案。
    猜你喜欢
    • 2010-12-26
    • 2020-11-12
    • 2016-08-26
    • 1970-01-01
    • 2013-10-03
    • 2011-08-05
    相关资源
    最近更新 更多