Come è possibile aggiungere uno Nokogiri::XML::Element
a un documento XML che viene creato con Nokogiri::XML::Buider
?Aggiunta di un elemento XML a un documento Nokogiri :: XML :: Builder
La mia soluzione attuale è serializzare l'elemento e utilizzare il metodo <<
per reinterpretarlo.
orig_doc = Nokogiri::XML('<root xmlns="foobar"><a>test</a></root>')
node = orig_doc.at('/*/*[1]')
puts Nokogiri::XML::Builder.new do |doc|
doc.another {
# FIXME: this is the round-trip I would like to avoid
xml_text = node.to_xml(:skip_instruct => true).to_s
doc << xml_text
doc.second("hi")
}
end.to_xml
# The expected result is
#
# <another>
# <a xmlns="foobar">test</a>
# <second>hi</second>
# </another>
Tuttavia il Nokogiri::XML::Element
è piuttosto grande nodo (nell'ordine di kilobyte e migliaia di nodi) e questo codice è nel percorso caldo. La creazione di profili mostra che il giro di serializzazione/analisi è molto costoso.
Come posso chiedere a Nokogiri Builder di aggiungere l'elemento XML esistente node
nella posizione "corrente"?
Questo è molto meglio del mio kludge con '# insert'. – gioele