Methods
T
Constants
CONTENT_ROOT = '__content__'.freeze
 
Instance Public methods
to_hash(hash={})

Convert XML document to hash

hash

Hash to merge the converted element into.

# File activesupport/lib/active_support/xml_mini/libxml.rb, line 36
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
  each_child 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
  if node_hash.length > 1 && node_hash[CONTENT_ROOT].blank?
    node_hash.delete(CONTENT_ROOT)
  end
  # Handle attributes
  each_attr { |a| node_hash[a.name] = a.value }
  hash
end