Ruby 创建一个连接多个其他XML文件的XML文件

Ruby 创建一个连接多个其他XML文件的XML文件,ruby,nokogiri,Ruby,Nokogiri,我正在尝试使用一些XML列表创建一个XML 下面是一个XML的示例列表 java.xml: ... .... c、 xml ... .... 我想使用上面的xml创建一个Programming.xml 它应该是这样的: <programming> <Java> <JavaDetails> <SomeList> ... </SomeList> .... </JavaDetails>

我正在尝试使用一些XML列表创建一个XML

下面是一个XML的示例列表

java.xml:

... 
....
c、 xml

... 
....
我想使用上面的xml创建一个Programming.xml

它应该是这样的:

<programming>
 <Java>
   <JavaDetails>
    <SomeList> ... </SomeList>
    ....
   </JavaDetails>
 </Java>
 <C>
  <CDetails>
    <SomeList> ... </SomeList>
   ....
  </CDetails>
 </C>
</programming>

... 
....
... 
....
我目前正在研究nokogiri是否也这样做,因为性能是一个主要因素,我不确定的是如何为输出XML创建节点。非常感谢使用Nokogiri在Ruby中提供的任何代码帮助。

要安装它:

gem install nokogiri
以下是语法:

require 'nokogiri'

builder = Nokogiri::XML::Builder.new do |xml|
  xml.programming {
    xml.Java {
      xml.JavaDetails {
        xml.SomeList 'List item'
      }
    }
  }
end
可以使用
to_xml
检索结果:

builder.to_xml

要创建具有特定根目录的新XML文件,可以简单到:

doc = Nokogiri.XML("<programming/>")
doc=Nokogiri.XML(“”)
将子节点添加到该文档的一种方法:

java = doc.root.add_child('<Java/>').first
java=doc.root.add_child(“”)。首先
要从磁盘读入另一个XML文件并附加它,请执行以下操作:

java_details = Nokogiri.XML( IO.read )
java << java_details.root
java_details=Nokogiri.XML(IO.read)

java请发布到目前为止您编写的代码。nokogiri文档在,还有一张备忘单在,您的“XML列表”是磁盘上XML文件的文件名列表吗?如何将文件名映射到包装其内容的标记?
java = doc.root.add_child('<Java/>').first
java_details = Nokogiri.XML( IO.read )
java << java_details.root
require 'nokogiri'
files = %w[ java.xml c.xml ]
doc   = Nokogiri.XML('<programming/>')

files.each do |filename|
  wrap_name = File.basename(filename,'.*').capitalize
  wrapper   = doc.root.add_child("<#{wrap_name} />").first
  wrapper   << Nokogiri.XML(IO.read(filename)).root
end

puts doc
builder = Nokogiri::XML::Builder.new do |xml|
  xml.programming do
    files.each do |filename|
      wrap_name = File.basename(filename,'.*').capitalize
      xml.send(wrap_name) do
        xml.parent << Nokogiri.XML(IO.read(filename)).root
      end
    end
  end
end

puts builder.to_xml