Never been to DZone Snippets before?

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

Ruby CSV to XML Converter (See related posts)

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.

#!/usr/bin/ruby

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(File.open(input_file) {|f| f.read} )
fields = csv.shift

puts "Writing XML..."

File.open(output_file, '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]}>"
    end
    f.puts " </#{record_name}>"
  end
  f.puts '</records>'
end # End file block - close file

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

Comments on this post

abesimpson posts on Apr 15, 2008 at 13:55
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
JimIvey posts on Apr 26, 2008 at 13:29
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:
http://www.ruby-lang.org/en/documentation/quickstart/

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.

You need to create an account or log in to post comments to this site.


Click here to browse all 4857 code snippets

Related Posts