From: Cam Date: 2005-07-23T03:47:00+09:00 Subject: Re: something similar to perl's XML::Simple Thanks everyone, I will check out the port for XML simple, that is just what i was looking for... i will need to look further into YAML however... i've never heard of that one before. I'm not necessarily needing XML per se (i just thought it seemed like a convenient way to store my data, but YAML seems to provide the same level of convenience). Is that a standard format across many languages (i hadn't heard of it before). Anyway, thanks for the help guys, Cameron Matheson On 7/22/05, James Edward Gray II wrote: > On Jul 22, 2005, at 12:36 PM, Cam wrote: > > > Hi! > > > > I'm trying to write a few simple apps (a flash-card type program for > > chinese characters, and a simple address book type program), and for > > the file format i want to use XML. Anyway, i don't need anything > > complex at all... just the most basic reading/writing of xml files > > possible. i was looking through a bunch of the various ruby-xml > > libraries, and it seems that rexml is the 'official' xml library for > > ruby? I like the looks of it, but it seems overly complex for what i > > want to do. My friend steve told me about a module in perl called > > xml:simple (apparently it just loads up the xml file into a nice > > little hash for you). Anyway, that sounds like just the thing for me, > > and i was wondering if ruby had anything similar. If not maybe just > > some simple example code for rexml (the debian packages didnt' seem to > > come w/ any). Tips or suggestions on xm file i/o would be greatly > > appreciated. > > Are you strictly tied to the XML idea? YAML is a standard Ruby > library and pretty darn easy to use. Here's an example: > > $ ls > yaml_example.rb > $ cat yaml_example.rb > #!/usr/local/bin/ruby -w > > require "YAML" > > unless File.exists? "contacts.yaml" # save some YAML > # build up some example data... > require "ostruct" > > contacts = Hash.new > > contact = OpenStruct.new > contact.first_name = "James" > contact.last_name = "Gray" > contact.address = "Where Ever Dr." > contact.state = "Edmond" > contact.city = "OK" > contact.zip = "12345" > > contacts["#{contact.last_name}, #{contact.first_name}"] = > contact > > contact = contact.dup > contact.first_name = "Dana" > > contacts["#{contact.last_name}, #{contact.first_name}"] = > contact > > # store data in a YAML file > File.open("contacts.yaml", "w") { |file| YAML.dump(contacts, > file) } > else # reload YAML data > # load > contacts = File.open("contacts.yaml") { |file| YAML.load > (file) } > > # and use... > p contacts["Gray, James"].first_name > end > $ ruby yaml_example.rb > $ ls > contacts.yaml yaml_example.rb > $ cat contacts.yaml > --- > "Gray, James": !ruby/object:OpenStruct > table: > :city: OK > :first_name: James > :zip: "12345" > :last_name: Gray > :address: Where Ever Dr. > :state: Edmond > "Gray, Dana": !ruby/object:OpenStruct > table: > :city: OK > :first_name: Dana > :last_name: Gray > :zip: "12345" > :address: Where Ever Dr. > :state: Edmond > $ ruby yaml_example.rb > "James" > > If you really do need XML, REXML is the way to go, in my opinion. > It's not too hard to learn and it will grow with you. We've had a > few Ruby Quizzes that dealt (in part) with XML writing and parsing. > Scanning those solutions will show you examples. Here are some links... > > For writing XML see Hans Fugal's and Brian Kang's solutions to: > > http://www.rubyquiz.com/quiz6.html > > For reading XML see most of the solutions to: > > http://www.rubyquiz.com/quiz30.html > > Now to finally answer your actual question: Yes, we do have a port > of XML::Simple. You can find the Ruby version here: > > http://www.maik-schmidt.de/xml-simple.html > > Hope that helps. > > James Edward Gray II > > >