instance method
to_hash
Ruby on Rails 2.3.18
Since v2.3.18 Last seen in v2.3.18Signature
to_hash(hash = {})
Convert XML document to hash
- hash
-
Hash to merge the converted element into.
Parameters
-
hashopt = {}
Source
# File activesupport/lib/active_support/xml_mini/nokogiri.rb, line 35
def to_hash(hash = {})
node_hash = {}
# Insert node hash into parent hash correctly.
case hash[name]
when Array then hash[name] << node_hash
when Hash then hash[name] = [hash[name], node_hash]
when nil then hash[name] = node_hash
else raise "Unexpected error during hash insertion!"
end
# Handle child elements
children.each do |c|
if c.element?
c.to_hash(node_hash)
elsif c.text? || c.cdata?
node_hash[CONTENT_ROOT] ||= ''
node_hash[CONTENT_ROOT] << c.content
end
end
# Remove content node if it is blank and there are child tags
if node_hash.length > 1 && node_hash[CONTENT_ROOT].blank?
node_hash.delete(CONTENT_ROOT)
end
# Handle attributes
attribute_nodes.each { |a| node_hash[a.node_name] = a.value }
hash
end
Defined in activesupport/lib/active_support/xml_mini/nokogiri.rb line 35
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveSupport::XmlMini_Nokogiri::Conversions::Node