Method: REXML::Element#root

Defined in:
lib/rexml/element.rb

#rootObject

:call-seq:

root -> element

Returns the most distant element (not document) ancestor of the element:

d = REXML::Document.new('<a><b><c/></b></a>')
top_element = d.first
child = top_element.first
top_element.root == top_element # => true
child.root == top_element       # => true

For a document, returns the topmost element:

d.root == top_element # => true

Related: #root_node, #document.



443
444
445
446
447
448
449
450
451
452
# File 'lib/rexml/element.rb', line 443

def root
  target = self
  while target
    return target.elements[1] if target.kind_of? Document
    parent = target.parent
    return target if parent.kind_of? Document or parent.nil?
    target = parent
  end
  nil
end