On 4/29/05, NAKAMURA, Hiroshi <nakahiro / sarion.co.jp> wrote:
> Hi all,
> 
> Sorry for OT & advertising.
> 
> Bill Guindon wrote:
> > On 4/29/05, Ruby Quiz <james / grayproductions.net> wrote:
> >
> >>You can find an XML file with over 5,000 song names and play time at
> >>http://rubyquiz.com/SongLibrary.xml.gz (100k compressed). The song durations are
> >>in milliseconds.
> >
> > Any suggestions for an easy to use XML library?  Or for that matter,
> > is it ok to convert it to another format?  Personally, I'd prefer CSV
> > or YAML (hate the extra baggage that comes with XML).
> 
> With the latest snapshot of soap4r, you can parse that like this;
> 
>   0% irb
>   irb(main):001:0> require 'zlib'
>   => true
>   irb(main):002:0> gz =
> Zlib::GzipReader.new(File.open("SongLibrary.xml.gz"))
>   => #<Zlib::GzipReader:0x101d5458>
>   irb(main):003:0> require 'xsd/mapping'
>   => true
>   irb(main):004:0> library = XSD::Mapping.xml2obj(gz.read); nil
>   => nil
>   irb(main):005:0> library.Artist.size
>   => 1004
>   irb(main):006:0> library.Artist.find { |artist| artist.xmlattr_name =
> "ABBA" }.Song.collect { |song| song.xmlattr_name }
>   => ["Caught Up In You", "Fantasy Girl", "Hold On Loosely", "Second
> Chance", "Teacher, Teacher", "Back Where You Belong", "The Sound of Your
> Voice"]
> 
> xml2obj generates singleton object for each XML element (It means you
> can't Marshal.dump it.  ).
> 
> Regards,
> // NaHi
> 
> 

Some very cool stuff.  Glad I asked.  I'll poke into it, and REXML as
Gavin and Ryan suggested.

Thanks much.

-- 
Bill Guindon (aka aGorilla)