我和Nokogiri有一个简单的问题。我想让Nokogiri :: HTML :: Builder制作以下形式的HTML片段:
<div>
#Some stuff in here
</div>
<div>
#Some other stuff in here
</div>
尝试时:
@builder = Nokogiri::HTML::Builder.new(:encoding => 'UTF-8') do |doc|
doc.div {
doc.p "first test"
}
doc.div {
doc.p "second test"
}
end
@builder.to_html
我收到错误:Document has already a root node
,我部分理解。我知道我没有将整个事物包装成标签(Nokogiri预计,Nokogiri :: HTML :: Builder继承自Nokogiri :: XML :: Builder,XML文档必须具有根节点)。但我不是在构建XML文档。
我错过了什么吗?任何形式的帮助都非常感谢。
答案 0 :(得分:25)
如您所述,Builder
将不允许您构建具有多个根节点的HTML文档。您需要使用DocumentFragment
@doc = Nokogiri::HTML::DocumentFragment.parse ""
Nokogiri::HTML::Builder.with(@doc) do |doc|
doc.div {
doc.p "first test"
}
doc.div {
doc.p "second test"
}
end
puts @doc.to_html
答案 1 :(得分:0)
这是我为替换图像src属性所做的:
doc = Nokogiri::HTML(html)
doc.xpath("//img").each do |img|
img.attributes["src"].value = Absolute_asset_path(img.attributes["src"].value)
end
doc.to_html