On Mon, Apr 21, 2008 at 11:32:01PM +0900, Max Russell wrote:
> I have a snippet of code that looks like this:
> 
>     next if row.nil?
>     for i in 0...row.length
>       next if row[i].nil?
>       f.puts "  <#{fields[i]}>#{row[i]}</#{fields[i]}>"
>     end
> 
> this is part of a small script that parses a CSV document and then
> creates an XML output file.
> 
> However, I would like to add support for nesting elements in the output,
> so that if the current column/value is surname or forename I can write
> my output in a nested fashion:
> 
> <PERSON>
>   <SURNAME>Brown</SURNAME>
>   <FORENAME>Bobby</FORENAME>
> </PERSON>
> 
> The problem I'm having is with the identification of the current element
> as either   SURNAME or FORENAME
> 
> I've tried using:
> 
> if #{fields[i]} == "<ORGANISATION_PERSON_SURNAME>"
> 
> (where fields is CSV.shift) and I've also tried
> 
> if row[i].data == 'ORGANISATION_PERSON_SURNAME'
> 
> What is the best way of acessing this please?

I would use FasterCSV and loop over each row, and have some controlling
information that shows which row fields should be grouped into a higher tag.

> I've attached my original script for perusal.
> 
> Attachments:
> http://www.ruby-forum.com/attachment/1765/csv_xml.rb

Completely off the cuff, untested, but this is the approach I'm thinking of.

  http://p.ramaze.net/1154

enjoy,

-jeremy

-- 
========================================================================
 Jeremy Hinegardner                              jeremy / hinegardner.org