meg*_*gas 1 html ruby nokogiri
我有这样的内容:
<div class="CodeRay">
<div class="code"><pre>puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Hello, world!</span><span style="color:#710">"</span></span></pre></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想使用Nokogiri将其添加到HTML文档中:
File.open("frame2.html", "r") do |file|
doc = Nokogiri::HTML.parse(file)
end
doc.at_css("body") = content # this is my content
puts doc.to_html
Run Code Online (Sandbox Code Playgroud)
然后内容转换为:
<div class="CodeRay">
<div class="code"><pre>puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">Hello, world!</span><span style="color:#710">&quot;</span></span></pre></div>
</div>
Run Code Online (Sandbox Code Playgroud)
HTML文件的另一部分是OK.问题是为什么Nokogiri剥离内容?为什么要将其转换为HTML实体?
我重新格式化了您的内部HTML,使其作为样本更具可读性.
Nokogiri并没有剥离任何东西,它只是编码正在添加的内容,因为你告诉它.
除非您告诉Nokogiri新文本已经是HTML,否则它将假定您正在添加文本,并且,由于文本包含应编码的字符,因此它会为您编码.
这是如何做你真正想要的:
require "nokogiri"
html = '<div class="CodeRay">
<div class="code">
<pre>puts <span style="background-color:#fff0f0;color:#D20">
<span style="color:#710">"</span>
<span style="">Hello, world!</span>
<span style="color:#710">"</span>
</span>
</pre>
</div>
</div>'
doc = Nokogiri::HTML('<html><body></body></html>')
doc.at('body').inner_html = html
puts doc.to_html
>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
>> <html><body><div class="CodeRay">
>> <div class="code">
>> <pre>puts <span style="background-color:#fff0f0;color:#D20">
>> <span style="color:#710">"</span>
>> <span style="">Hello, world!</span>
>> <span style="color:#710">"</span>
>> </span>
>> </pre>
>> </div>
>> </div></body></html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |