如何使用 Nokogiri 将节点从一个 xml 文件复制到另一个文件?

How can I copy nodes from one xml file to another, using Nokogiri?

我正在尝试执行以下操作:

我生成了以下 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等) 29=] 文件。 所以,假设我有另一个 xml_2 文件,如下所示:

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

等等..我可以xml_3..xml_n.

我的问题是: 是否可以在 ruby 文件中使用 Nokogiri 将一个 xml 文件的节点复制到另一个文件?

提前致谢!

参见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>

根据文档,您可以附加任何节点、文档片段或节点集,因此您可以 select 以任何您想要的方式添加目标节点(CSS selectors,XPath,DOM,等等)。