2015-03-13 76 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

相關問題