2015-03-13 75 views
0

我试图做到以下几点:如何使用Nokogiri将节点从一个xml文件复制到另一个xml文件?

我有以下xml_1文件,我产生。

<document> 
    <TITLE>Computer Parts</TITLE> 
    <header> 
     <ITEM>Motherboard</ITEM> 
     <MANUFACTURER>ASUS</MANUFACTURER> 
     <MODEL>P3B-F</MODEL> 
     <COST> 123.00</COST> 
    </header> 
    <part1> 
     <ITEM>Video Card</ITEM> 
     <MANUFACTURER>ATI</MANUFACTURER> 
     <MODEL>All-in-Wonder Pro</MODEL> 
     <COST> 160.00</COST> 
    </part1> 
    ..... 
    <part5> 
    </part5> 
{HERE I WANT TO ADD NODES FROM OTHER XML FILES} 
</document> 

因为我想产生一个大的XML文件,我更喜欢生成他们的作品,并最终将它们结合起来。通过这种方式,我拥有更清晰,更易读的代码。

最后,我想在xml_1文件中依次复制xml文件(xml_2,xml_3等)。 所以,让我们说,我有另一个xml_2文件类似如下:

<?xml version="1.0"?> 
    <part6> 
    </part6> 
    ... 
    <part10> 
    </part10> 

等等..我可以有xml_3 .. xml_n。

我的问题是: 在Ruby文件中使用引入nokogiri复制一个XML文件到另一个节点是否有可能?

在此先感谢!

回答

2

Nokogiri::XML::Node#<< to append children

require 'nokogiri' 

doc1 = Nokogiri::XML('<doc><foo>Foo</foo></doc>') 
doc2 = Nokogiri::XML('<doc><bar>Bar</bar></doc>') 
doc3 = Nokogiri::XML('<doc><gah>Gah</gah></doc>') 

doc1.root << doc2.root.children # Append doc2's root's children to doc1's root. 
doc1.root << doc3.root.children # Append doc3's root's children to doc1's root. 

doc1.to_xml # => 
# <doc> 
# <foo>Foo</foo> 
# <bar>Bar</bar> 
# <gah>Gah</gah> 
# </doc> 

%的文档,你可以附加任何节点,文档片段或节点集,所以你可以在几乎任何你想要的方式选择目标节点(CSS选择器,XPath的,DOM等)。

+0

我试过了,它工作。 – Ectoras 2015-03-15 11:03:15

相关问题