如何使用 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,等等)。
我正在尝试执行以下操作:
我生成了以下 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,等等)。