2015-03-26 15 views
6

Ho il seguente semplice file XML.Come salvare le mie modifiche nel file XML con Nokogiri

<?xml version="1.0"?> 
<user-mapping> 

</user-mapping> 

Desidero aggiungere contenuto alla mappatura utente utilizzando Nokogiri.

Questo è il mio codice:

f = File.open("exam.xml") 
doc = Nokogiri::XML(f) 
puts doc.to_s 
map = doc.at_css "user-mapping" 
map.content = "Gholam" 
puts map.to_s 
doc.to_xml 
f.close 

L'uscita del puts sono:

<?xml version="1.0"?> 
<user-mapping> 

</user-mapping> 
<user-mapping>Gholam</user-mapping> 

Ma quando il codice finisce, nulla è stato il cambiamento nel file XML vero e proprio. Qualcuno può spiegarmi come salvare le mie modifiche nel file XML?

+0

scrivere il file su disco utilizzando convenzione standard Ruby. Non vi è alcuna caratteristica speciale in Nokogiri per la scrittura di file. –

risposta

11

leggere il file in un documento XML in memoria, modificare il documento in base alle esigenze, quindi serializzare il documento indietro nel file originale:

filename = 'exam.xml' 
xml = File.read(filename) 
doc = Nokogiri::XML(xml) 
# ... make changes to doc ... 
File.write(filename, doc.to_xml) 
+0

Oppure 'File.write (nome file, doc.to_xml)' –

+0

@theTinMan: sì, buona idea =) – maerics