如何使用Nokogiri保存我在XML文件中的更改

cli*_*ick 9 ruby xml nokogiri

我有以下简单的XML文件.

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

</user-mapping>
Run Code Online (Sandbox Code Playgroud)

我想使用Nokogiri为用户映射添加内容.

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

输出puts是:

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

</user-mapping>
<user-mapping>Gholam</user-mapping>
Run Code Online (Sandbox Code Playgroud)

但是当代码结束时,实际的XML文件中没有任何变化.任何人都可以向我解释如何在XML文件中保存我的更改?

mae*_*ics 15

将文件读入内存中的XML文档,根据需要修改文档,然后将文档序列化回原始文件:

filename = 'exam.xml'
xml = File.read(filename)
doc = Nokogiri::XML(xml)
# ... make changes to doc ...
File.write(filename, doc.to_xml)
Run Code Online (Sandbox Code Playgroud)

  • 不需要`to_xml`,只需`File.write(filename, doc)` (2认同)