#!/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}."
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.
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