/ / aggiungi nodo xml al documento con nokogiri - ruby-on-rails

aggiungi nodo xml al documento con nokogiri - ruby-on-rails

Voglio aggiungere un nodo al documento, ma come figlio del nodo del corpo. Quando uso << o push, aggiunge semplicemente il nodo dopo il nodo del corpo, non come un bambino:

xml = zip.read("word/document.xml")
doc = Nokogiri::XML(xml) {|x| x.noent}
body = doc.xpath("//w:body")
node = Nokogiri::XML::Node.new("<w:p w14:paraId="322D15A5" w14:textId="3D86357C" w:rsidR="00E1538A" w:rsidRDefault="002D3A2C">Hello Worldn</w:p>",doc)
body << node

Come posso aggiungere il nodo come figlio di un corpo piuttosto che come un fratello?

risposte:

1 per risposta № 1

L'avevo capito. body è il contenitore Nokogiri :: XML :: NodeSet. È intuitivo pensare che lo si accludesse a questo, ma ciò non funzionava: quando si raggiunge un livello più profondo, si ottiene l'elemento stesso del corpo:

> body.first.class
=> Nokogiri::XML::Element

E per meglio o wose, aggiungendo il nuovo nodo a quel nodo del corpo:

body.first << node

Ottieni il risultato annidato desiderato.