由Nokogiri扩展现有的XML



我正在尝试扩展现有的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

相关内容

  • 没有找到相关文章

最新更新