method

from_xml

v4.1.8 - Show latest stable - Class: Hash
from_xml(xml, disallowed_types = nil)
public

Returns a Hash containing a collection of pairs when the key is the node name and the value is its content

xml = <<-XML
  <?xml version="1.0" encoding="UTF-8"?>
    <hash>
      <foo type="integer">1</foo>
      <bar type="integer">2</bar>
    </hash>
XML

hash = Hash.from_xml(xml)
# => {"hash"=>{"foo"=>1, "bar"=>2}}

DisallowedType is raised if the XML contains attributes with type="yaml" or type="symbol". Use Hash.from_trusted_xml to parse this XML.

1Note

Looks like this method has trouble with attributes:

backslashen ยท Apr 3, 20121 thank

ex:

require 'rubygems'
require 'bundler'
require 'active_support/core_ext'
require 'pp'

xml  = 
'<test id="appears">
  <comment id="doesnt appear">
    it worked
  </comment>
  <comment>
   see!
  </comment>
  <comment />
</test>'

hash = Hash.from_xml(xml)

pp hash

#=>{"test"=>{"id"=>"appears", "comment"=>["it worked", "see!", nil]}}

# Notice how the id attribute on the first comment element doesn't appear.