0

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

1 回答 1

5

Nokogiri::XML::Builder实际上只在创建新的 XML 文件时使用,而不是在编辑它们时使用。

此外,您的代码加载 XML 并将其放入新的根节点(根),同时将新的子节点(数据节点)附加到它。这真的是理想的行为吗?

通常你会像这样添加一个节点:

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-Documentation,它相当广泛。

还有其他方法可以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
于 2012-07-18T16:15:52.873 回答