使用Nokogiri HTML Builder创建具有多个根节点的片段

好吧,我和Nokogiri有一个简单的问题。 我想让Nokogiri :: HTML :: Builder制作以下forms的HTML片段:

#Some stuff in here
#Some other stuff in here

在尝试时:

 @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 :: Builderinheritance自Nokogiri :: XML :: Builder,XML文档必须有根节点)。 但我不是在构建XML文档。

我错过了什么吗? 任何forms的帮助都非常感谢。

如您所述, 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 

这是我为替换图像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