Nokogiri write_html_to oddness?



我想使用Nokogiri来解析HTML片段,对它做一些事情,并将有效的HTML写入文件。

这似乎很容易,但我很困惑为什么Nokogiri的doc.write_html_to方法将我的片段包装在一个空元素标签括号中。

# Try this in IRB
doc = Nokogiri::HTML.fragment('<h1 id="foo">Hello</h1>')
# Option #1 - Wrapped in Empty Tag
doc.write_html_to(File.new('write_html_to.html', 'w'), :encoding => 'UTF-8')
# => <><h1 id="foo">Hello</h1></>
# Option #2 - Works as needed
File.open('doc_to_html.html', 'w'){|f| f.write(doc.to_html(:encoding => 'UTF-8'))}
# => <h1 id="foo">Hello</h1>

任何想法为什么选项#1是包装在一个空标签的HTML片段文件?

在编写Nokogiri::HTML::DocumentFragment时,似乎是Node#write_html_to实现中的错误。我发现write_xhtml_to工作正常:

doc.write_xhtml_to(File.new('write_xhtml_to.html', 'w'), :encoding => 'UTF-8')
# => <h1 id="foo">Hello</h1>

我一直使用File.write单行书写。它就像使用Nokogiri的write_html_to一样方便,并且比使用File.open和块更短:

require 'nokogiri'
doc = Nokogiri::HTML.fragment('<h1 id="foo">Hello</h1>')
File.write('write_html_to.html', doc.to_html(encoding: 'UTF-8'))

相关内容

  • 没有找到相关文章

最新更新