/ / dopisz węzeł XML do dokumentu za pomocą nokogiri - ruby-on-rails

dołącz do węzła xml do dokumentu za pomocą nokogiri - ruby-on-rails

Chcę dołączyć węzeł do dokumentu, ale jako element potomny węzła body. Kiedy używam << lub push, po prostu dodaje węzeł po węźle body, a nie jako jego potomek:

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

Jak mogę dodać węzeł jako dziecko ciała zamiast rodzeństwa?

Odpowiedzi:

1 dla odpowiedzi № 1

Rozgryzłem to. body to kontener Nokogiri :: XML :: NodeSet. Intuicyjnie myślisz, że dodałeś to do tego, ale to nie zadziałało. Kiedy osiągnąłeś jeden poziom głębszy, otrzymałeś sam element ciała:

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

A dla lepszego lub lepszego, dołączając do nowego węzła do tego węzła body:

body.first << node

Otrzymasz pożądany wynik zagnieżdżony.