2015-03-26 19 views
6

Mam następujący prosty plik XML.Jak zapisać moje zmiany w pliku XML za pomocą Nokogiri

Chcę dodać zawartość do mapy użytkownika za pomocą Nokogiri.

To jest mój kod:

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 

Wyjście puts są:

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

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

Ale gdy kod się kończy, nic nie było zmian w rzeczywistym pliku XML. Czy ktoś może mi wyjaśnić, jak zapisać moje zmiany w pliku XML?

+0

Zapisz plik na dysku przy użyciu standardowej konwencji Ruby. W Nokogiri nie ma specjalnej funkcji do pisania plików. –

Odpowiedz

11

Czytaj plik do dokumentu XML w pamięci, zmodyfikować dokument, ile potrzeba, a następnie serializacji dokument z powrotem do oryginalnego pliku:

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

Lub 'File.write (filename, doc.to_xml)' –

+0

@tinMan: tak, dobry pomysł =) – maerics

Powiązane problemy