DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Ruby CSV To XML Converter

  • submit to reddit
        This code will take an input CSV file and output XML. IT was easy to write, but I haven't found anything out there to do this. The first line of the CSV file should contain the element names.


require 'csv'

print "CSV file to read: "
input_file = gets.chomp

print "File to write XML to: "
output_file = gets.chomp

print "What to call each record: "
record_name = gets.chomp

csv = CSV::parse( {|f|} )
fields = csv.shift

puts "Writing XML...", 'w') do |f|
  f.puts '<?xml version="1.0"?>'
  f.puts '<records>'
  csv.each do |record|
    f.puts " <#{record_name}>"
    for i in 0..(fields.length - 1)
      f.puts "  <#{fields[i]}>#{record[i]}</#{fields[i]}>"
    f.puts " </#{record_name}>"
  f.puts '</records>'
end # End file block - close file

puts "Contents of #{input_file} written as XML to #{output_file}."


Snippets Manager replied on Fri, 2008/07/25 - 6:17am

Thanks for posting this code - this helped me out enormously. Ian. --

Snippets Manager replied on Sat, 2008/04/26 - 12:21pm

Until a few weeks ago, I didn't know anything about ruby either. But I do have some programming experience.... Don't know your background. This is the first place I started: You could probably just do that much and copy the above script into the interactive ruby experience line-by-line to get the result you're looking for. For my particular needs (repeat: for MY PARTICULAR NEEDS), I'm ditching bash, perl, and php for ruby. I like it that much. Regards.

Snippets Manager replied on Tue, 2008/04/15 - 12:38pm

I am not a programmer but have need of your code to convert csv files to their xml versions. Your code is the closest I have found to accomplish this task. Trouble is I have no idea what Ruby is or how to run your code. My needs are a file that when executed will read a csv file of a specific name and save to an xml of a specific name (over writting any previous xml file). I would appreciate any suggestions as how to start