Method: Hash.from_xml
- Defined in:
- activesupport/lib/active_support/core_ext/hash/conversions.rb
.from_xml(xml, disallowed_types = nil) ⇒ Object
Returns a Hash containing a collection of pairs when the key is the node name and the value is its content
xml = " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <hash>\n <foo type=\"integer\">1</foo>\n <bar type=\"integer\">2</bar>\n </hash>\n"
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.
Custom disallowed_types
can also be passed in the form of an array.
xml = " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <hash>\n <foo type=\"integer\">1</foo>\n <bar type=\"string\">\"David\"</bar>\n </hash>\n"
hash = Hash.from_xml(xml, ['integer'])
# => ActiveSupport::XMLConverter::DisallowedType: Disallowed type attribute: "integer"
Note that passing custom disallowed types will override the default types, which are Symbol and YAML.
128 129 130 |
# File 'activesupport/lib/active_support/core_ext/hash/conversions.rb', line 128 def from_xml(xml, disallowed_types = nil) ActiveSupport::XMLConverter.new(xml, disallowed_types).to_h end |