require 'rexml/document'
include REXML
xml =<
Bonsai asd
Oak df
Sycamore ddf
Maple eer
Pine iuh
Bonsai vrf
Hawthorn wet
XML
doc = Document.new(xml)
class REXML::Document
def records_to_h
XPath.match(self.root, 'records/*').map do |row|
XPath.match(row, '*').inject({}) do |r,node|
r[node.name.to_s.to_sym] = node.text.to_s
r
end
end
end
end
tree = doc.records_to_h
#=> [{:name=>"Bonsai", :origin=>"asd"}, {:name=>"Oak", :origin=>"df"}, {:name=>"Sycamore", :origin=>"ddf"}, {:name=>"Maple", :origin=>"eer"}, {:name=>"Pine", :origin=>"iuh"}, {:name=>"Bonsai", :origin=>"vrf"}, {:name=>"Hawthorn", :origin=>"wet"}]
tree[0][:name] #=> "Bonsai"
tree[0][:origin] #=> "asd"
Read more: http://feeds.dzone.com/~r/dzone/snippets/~3/K-oIUEPiv-M/10773