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

Ger*_*rry 14 ruby nokogiri

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

<div>
#Some stuff in here
</div>
<div>
#Some other stuff in here
</div>
Run Code Online (Sandbox Code Playgroud)

在尝试时:

@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
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:Document has already a root node我部分理解.我知道我没有将整个事物包装成标签(Nokogiri预计,Nokogiri :: HTML :: Builder继承自Nokogiri :: XML :: Builder,XML文档必须具有根节点).但我不是在构建XML文档.

我错过了什么吗?任何形式的帮助都非常感谢.

mic*_*ael 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
Run Code Online (Sandbox Code Playgroud)