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
···
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.
---
"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