我正在尝试扩展现有的XML文件并添加一个新节点。我正在加载包含许多产品的XML,添加一个新产品并保存它
我正在使用Nokogiri和Ruby 1.9.3。
这是我创建的最好的:
builder = Nokogiri::XML::Builder.new do
root do
load_xml = Nokogiri::XML(IO.read("test.xml"))
parent.add_child(load_xml.root)
data do
name "Name"
end
end
end
file = File.open("test.xml",'w')
file.puts builder.to_xml
file.close
Nokogiri::XML::Builder
实际上只在创建新的XML文件时使用,而不是在编辑它们时使用。
此外,您的代码加载XML并将其放入一个新的根节点(root),同时将一个新子节点(数据节点)附加到它。这真的是所需的行为吗?
通常你会添加这样一个节点:
doc = Nokogiri::XML(IO.read("test.xml"))
name_node = Nokogiri::XML::Node.new("name",doc)
name_node.content = "Name"
data_node = Nokogiri::XML::Node.new("data",doc)
data_node.add_child(name_node)
doc.root.add_child(data_node)
file = File.open("test.xml",'w')
file.puts doc.to_xml
file.close
这不需要创建新的根节点,因为这看起来有点我特有的…
此外,你可能想尝试Nokogiri文档,它相当广泛。
还有其他方法,可以使用Nokogiri::XML::Builder
来创建数据的所有不利因素,这将是这种组合方法的一个例子:
builder = Nokogiri::XML::Builder.new do
data do
name "Name"
end
end
doc = Nokogiri::XML(IO.read("test.xml"))
doc.root.add_child builder.doc.root
file = File.open("test.xml",'w')
file.puts doc.to_xml
file.close