PDA

View Full Version : Convert from CSV to XML



abesimpson
04-15-2008, 11:13 AM
I have been searching for code that will convert a specifically hard coded named csv file to an xml file of the same name.xml. I have found the following code (written by a J Norris) which purports to do this, but in a Ruby(?) scripting language, whatever that is.

#!/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

Thanks for any help in directing me to a solution.

stanl
04-20-2008, 04:23 AM
Microsoft has an MsPersist Provider as part of MDAC (versions 2.5 or greater). This provides an XML format that can be treated as a regular ADO recordset, which means it can be searched, filtered, have rows added/edited/deleted and be linked to standard db's as typed fields.

The quickest way to move a csv to this format is to write a short ADO routine which uses the Jet 4.0 provider and a schema.ini entry - ... :dunno Oh, and this xml format [Microsoft calls it the z:row format] can be moved to a more standard with MSXML DomDocument.

Post a sample of your csv (with headers) and I'll show you what I mean.

Stan

abesimpson
04-20-2008, 06:42 AM
I have many, many csv files with different structures to be converted, so let's just consider a generic format as below:

DATE, Name, High, Low, Open, Close

Trust this is OK?

Many thanks for your assistance.