Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save my changes in XML file with Nokogiri

Tags:

xml

ruby

nokogiri

I have the following simple XML file.

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

</user-mapping>

I want to add content to the user mapping using Nokogiri.

This is my code:

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

The output of the puts are:

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

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

But when the code ends, nothing has been change in the actual XML file. Can anyone explain to me how to save my changes in the XML file?

like image 469
click Avatar asked Mar 26 '15 19:03

click


1 Answers

Read the file into an in-memory XML document, modify the document as needed, then serialize the document back into the original file:

filename = 'exam.xml'
xml = File.read(filename)
doc = Nokogiri::XML(xml)
# ... make changes to doc ...
File.write(filename, doc.to_xml)
like image 71
maerics Avatar answered Oct 21 '22 17:10

maerics