Method: REXML::Element#namespaces

Defined in:
lib/rexml/element.rb

#namespacesObject

:call-seq:

namespaces -> array_of_namespace_names

Returns a hash of all defined namespaces in the element and its ancestors:

xml_string = <<-EOT
  <root>
     <a xmlns:x='1' xmlns:y='2'>
       <b/>
       <c xmlns:z='3'/>
     </a>
  </root>
EOT
d = REXML::Document.new(xml_string)
d.elements['//a'].namespaces # => {"x"=>"1", "y"=>"2"}
d.elements['//b'].namespaces # => {"x"=>"1", "y"=>"2"}
d.elements['//c'].namespaces # => {"x"=>"1", "y"=>"2", "z"=>"3"}


590
591
592
593
594
595
596
597
# File 'lib/rexml/element.rb', line 590

def namespaces
  namespaces_cache = document&.__send__(:namespaces_cache)
  if namespaces_cache
    namespaces_cache[self] ||= calculate_namespaces
  else
    calculate_namespaces
  end
end