Использование Nokogiri HTML Builder для создания фрагмента с несколькими корневыми узлами
Ну, у меня есть простая проблема с Нокогири. Я хочу сделать 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-документ должен иметь корень node). Но я не строю XML-документ.
Я что-то упустил? Любая помощь очень ценится.
Ответы
Ответ 1
Как вы отметили, 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
Ответ 2
Вот что я сделал для замены изображений src attributes:
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