【问题标题】:How can I copy nodes from one xml file to another, using Nokogiri?如何使用 Nokogiri 将节点从一个 xml 文件复制到另一个?
【发布时间】:2015-03-13 16:53:15
【问题描述】:

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

我生成了以下 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 文件的节点复制到另一个?

提前致谢!

【问题讨论】:

    标签: ruby xml nokogiri


    【解决方案1】:

    Nokogiri::XML::Node#&lt;&lt; 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 等)选择目标节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2017-05-15
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      相关资源
      最近更新 更多