使用nokogiri将Ruby XML转换为CSV

时间:2018-12-11 12:36:36

标签: ruby xml csv nokogiri

我对红宝石和编程完全陌生。我正在尝试使用Ruby和nokogiri将XML导出为CSV。我的代码:

require 'csv'
require 'nokogiri'

file = File.read('example.xml')
doc = Nokogiri::XML(file)
a = []
csv = CSV.open('output.csv', 'wb') 

CSV.open('output.csv', 'wb') do |csv|
    csv << doc.at('Start').search('*').map(&:name)
    doc.search('Start').each do |x|
      csv << x.search('*').map(&:text)
    end
  end

我要转换的XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <Start>
        <Value1>2018-10-15</Value1>
        <Value2>2018-11-17</Value2>
        <Value3>
            <ID type="Value3_ID">XXX1</ID>
        </Value3>
        <Value4>
            <ID type="Value4_ID">XXX2</ID>
        </Value4>
        <Value5>
            <ID type="Value5_ID">XXX3</ID>
        </Value5>
        <Value6.1>
            <Value6.2>
                <ID type="Value6.2_ID">XXX4</ID>
            </Value6.2>
            <Value6.3>XXX5</Value6.3>
            <Value6.4>XXX6</Value6.4>
            <Value6.5>
                <ID type="Value6.5_ID">XXX7</ID>
            </Value6.5>
            <Value6.6>XXX8</Value6.6>
            <Value6.7>XXX9</Value6.7>
        </Value6.1>
        <Value6.1>
            <Value6.2>
                <ID type="Value6.2_ID">XXX10</ID>
            </Value6.2>
            <SValue6.3>XXX11</SValue6.3>
            <Value6.5>
                <ID type="Value6.5_ID">XXX12</ID>
            </Value6.5>
        </Value6.1>
    </Start>
</root>

很抱歉,这是一个非常基本的问题。对我来说,最重要的是xml将自动转换,因为我有很多不同的XML,所以我无法列出我需要的所有节点。 +最好没有这个空节点。...

谢谢!