2015-04-14 4 views
0

У меня есть файл CSV, который я хочу проанализировать с помощью ruby ​​и генерировать XML из него.Создайте XML из CSV с помощью ruby ​​

Вот пример CSV:

id;us;de 
1;hello;hallo 
2;usa;deutschland 
3;big;gross 

XML, должен выглядеть следующим образом, когда это делается:

<?xml version="1.0" encoding="UTF-8"?> 
<catalog> 
    <cat id="1"> 
     <attrs> 
      <attr attr-id="word" xml:lang="us">hello</attr> 
      <attr attr-id="word" xml:lang="de">hallo</attr> 
     </attrs> 
    </cat> 
    <cat id="2"> 
     <attrs> 
      <attr attr-id="word" xml:lang="us">usa</attr> 
      <attr attr-id="word" xml:lang="de">deutschland</attr> 
     </attrs> 
    </cat> 
    <cat id="3"> 
     <attrs> 
      <attr attr-id="word" xml:lang="us">big</attr> 
      <attr attr-id="word" xml:lang="de">gross</attr> 
     </attrs> 
    </cat> 
</catalog> 

А вот что мой файл рубин выглядит так далеко:

require 'csv' 

file = File.open("file.csv", "r:UTF-8").read 

data = CSV.parse(file, :quote_char => "'", :col_sep => ";") 

data.each do |column| 
    id = column[0] 
    puts id 
end 

Я получаю каждый столбец, но я не могу его пропустить, чтобы сгенерировать XML. Вы знаете, как добраться до моего последнего XML?

+1

http://www.nokogiri.org/ – mudasobwa

ответ

0
require 'csv' 

puts '<?xml version="1.0" encoding="UTF-8"?>' 

CSV.foreach("data.csv") do |row| 
    puts '<catalog>' 
    puts '<cat id=' + "#{row[0]}" + '>' 
    puts '<attrs>' 
    puts '<attr attr-id="word" xml:lang=' + "#{row[1]}" +'>hello</attr>' 
    puts '<attr attr-id="word" xml:lang=' + "#{row[2]}" +'>hello</attr>' 
    puts '</attrs>' 
    puts '</cat>' 
end 

puts '</catalog>'