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

标签 ruby xml nokogiri

我有以下简单的 XML 文件。

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

</user-mapping>

我想使用 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

puts 的输出是:

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

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

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

最佳答案

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

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

关于ruby - 如何使用 Nokogiri 将我的更改保存在 XML 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287517/

相关文章:

ruby - Ruby 上的 std::endl 等效项?

java - 最佳 StAX 实现

java - 为什么我的 java 方法在 return 语句之后执行行?

html - 如何在不调用 "next_element"方法的情况下使用 Nokogiri 选择下一个元素?

ruby - 如何在 ruby​​ 中使用 mechanize 将字符串插入文本字段?

ruby - Netbeans:导航 -> 去声明?

ruby-on-rails - 像 BetterErrors for JRuby 这样的工具?

ruby - 从 ruby​​ 哈希中的匹配键检索值的更好方法

PHP XML 到具有属性和值的数组/对象

ruby - 如何让 Nokogiri 不转换为空间