使用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