Well I have a simple problem with Nokogiri. I want to make Nokogiri::HTML::Builder to make an HTML fragment of the following form:
<div>
#Some stuff in here
</div>
<div>
#Some other stuff in here
</div>
When trying to do:
@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
I get an error: Document has already a root node
, which I partly understand. I know I am not wrapping the whole thing into tags (which Nokogiri expects as Nokogiri::HTML::Builder inherits from Nokogiri::XML::Builder and an XML document must have a root node). But I am not building an XML document.
Am I missing something? Any kind of help is much appreciated.
As you noted, Builder
will not allow you to build an HTML document with multiple root nodes. You'll need to use 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With