parse_stream (REXML::Element)

    # File rexml/element.rb, line 615
      def Element.parse_stream source, listener
    			begin
    				# Get the next tag
    				name, closed, attrs = base_parser(source)
    				attrs.each { |ar| ar[1,1] = [] }
    				listener.tag_start name, attrs
    				unless closed
    					while true
    						md = source.match(/\A(\s*[^>]*>)/um)
    						raise ParseException.new("malformed XML: bad content", source,
    						self) unless md
    						line = md[1]
    						return if line.nil?
    						case line
    						when /\A<[\w_:]/um
    							Element.parse_stream source, listener
    						when /\A<\//um
    							break
    						when CData::START_RE
    							CData.parse_stream source, listener
    						when Comment::START_RE
    							Comment.parse_stream source, listener
    						when Instruction::START_RE
    							Instruction.parse_stream source, listener
    						else
    							raise ParseException.new("malformed XML: bad content", source ) if md[1][0] == ?<
    							Text.parse_stream source, listener
    						end
    					end
    					#nregexp = Regexp.new("^\s*<\/#{name}\s*>", Regexp::MULTILINE, 'u')
    					#if source.match(nregexp, true)
    					if source.match(/^\s*<\/#{name}\s*>/, true)
    						listener.tag_end name
    					else
    						raise ParseException.new( "Missing end tag for #{name}",
    						source )
    					end
    				else
    					listener.tag_end name
    				end
    			rescue ParseException
    				$!.source = source
    				$!.element = self if self.kind_of? Element
    				raise
    			rescue Exception
    				raise
    				old_ex = $!
    				raise ParseException.new("unidentified error", source, self, old_ex)
    			end
    		end