Forum: Ruby CSV to XML

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bee T. (Guest)
on 2008-10-25 22:41
Great forum, been a reader for a long time. My first post comes as a
request for some help.

I am trying to process a CSV of undetermined length (want to know how to
incorporate 'wc -l').

The CSV has 4 columns that I want to map to XML nodes.

I am having trouble writing each CSV line to an individual XML file (100
lines = 100 XML files). The first CSV element in each line would be the
xml file name.

Seems pretty straight forward but I am pulling my hair out trying to
make it work. Any help would be greatly appreciated. I have googled
everywhere for it. I appreciate any help in advance!
James G. (Guest)
on 2008-10-25 23:33
(Received via mailing list)
On Oct 25, 2008, at 1:41 PM, Bee T. wrote:

> (100
> lines = 100 XML files). The first CSV element in each line would be
> the
> xml file name.
>
> Seems pretty straight forward but I am pulling my hair out trying to
> make it work. Any help would be greatly appreciated. I have googled
> everywhere for it. I appreciate any help in advance!

How about something like this:

$ cat for_xml.csv
filename
one
two
three
$ cat csv2xml.rb
#!/usr/bin/env ruby -wKU

require "rubygems"
require "faster_csv"

FCSV.foreach(ARGV.shift, :headers => true) do |row|
   File.open(row["filename"] + ".xml", "w") do |f|
     # create XML data here...
   end
end
$ ruby csv2xml.rb for_xml.csv
$ ls *.xml
one.xml    three.xml  two.xml

Hope that helps.

James Edward G. II
Bee T. (Guest)
on 2008-10-26 02:11
Thanks James, gettign this error, trying to work it out:


makeXML.rb:7: undefined method `+' for nil:NilClass (NoMethodError)
  from
/Library/Ruby/Gems/1.8/gems/fastercsv-1.4.0/lib/faster_csv.rb:1514:in
`each'
  from
/Library/Ruby/Gems/1.8/gems/fastercsv-1.4.0/lib/faster_csv.rb:1017:in
`foreach'
  from
/Library/Ruby/Gems/1.8/gems/fastercsv-1.4.0/lib/faster_csv.rb:1191:in
`open'
  from
/Library/Ruby/Gems/1.8/gems/fastercsv-1.4.0/lib/faster_csv.rb:1016:in
`foreach'
  from makeXML.rb:6
This topic is locked and can not be replied to.