我正在尝试执行以下操作:
我有以下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文件的节点复制到另一个?
提前致谢!
答案 0 :(得分: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等)。