parse (REXML::Document)

    # File rexml/document.rb, line 196
      def parse( source )
    			begin
    				while not source.empty?
    					source.match( /^\s*/um, true )
    					word = source.match( /^(<.*?)>/um )
    					word = word[1] unless word.nil?
    					case word
    					when nil
    						word = source.match( /\s*(\S+)/um, true )
    						return if word.nil?
    						raise ParseException.new( "data found outside of root element (data is '#{word}')", source ) if word[0].strip.length > 0
    					when Comment::START_RE
    						self.add( Comment.new( source ) )
    					when DocType::START_RE
    						self.add( DocType.new( source ) )
    					when XMLDecl::START_RE
    						x = XMLDecl.new( source )
    						source.encoding = x.encoding
    						self.add( x )
    					when Instruction::START_RE
    						self.add( Instruction.new(source) )
    					else
    						Element.new( source, self, @context )
    					end
    				end
    				unless @elements.size == 1
    					#@children.find_all{|x| puts x if x.kind_of? Element }
    					raise "the document does not have exactly one root"
    				end
    			rescue ParseException
    				$!.source = source
    				$!.element = self
    				raise
    			rescue Exception
    				old_ex = $!
    				raise ParseException.new("unidentified error", source, self, old_ex)
    			end
    		end