# File rexml/element.rb, line 956
    def parse source
      # Get the next tag
      self.name, closed, attrs = Element.base_parser(source)
      attrs.each do |set|
	@attributes.add( Attribute.new( set[0], set[2] ) )
      end

      unless closed
	parse_children source
	raise ParseException.new( "Missing end tag for #{expanded_name}", source, self) unless source.match(/^\s*<\/#@expanded_name\s*>/um, true)
      end
    rescue ParseException
      $!.source = source
      $!.element = self
      raise
    rescue Exception
      old_ex = $!
      raise ParseException.new("unidentified error", source, self, old_ex)
    end