# File lib/jabber4r/protocol.rb, line 1340
1340:         def     parseparseparseparseparse
1341:           @started = false
1342:           begin
1343:             parser = REXML::Parsers::SAX2Parser.new @stream 
1344:             parser.listen( :start_element ) do |uri, localname, qname, attributes|
1345:               case qname
1346:               when "stream:stream"
1347:                 openstream = ParsedXMLElement.new(qname)
1348:                 attributes.each { |attr, value| openstream.add_attribute(attr, value) }              
1349:                 @listener.receive(openstream)
1350:                 @started = true
1351:               else 
1352:                 if @current.nil?
1353:                   @current = ParsedXMLElement.new(qname)
1354:                 else
1355:                   @current = @current.add_child(qname)
1356:                 end
1357:                 attributes.each { |attr, value| @current.add_attribute(attr, value) }
1358:               end
1359:             end
1360:             parser.listen( :end_element ) do  |uri, localname, qname|
1361:               case qname
1362:               when "stream:stream"
1363:                 @started = false
1364:               else
1365:                 @listener.receive(@current) unless @current.element_parent
1366:                 @current = @current.element_parent
1367:               end
1368:             end
1369:             parser.listen( :characters ) do | text |
1370:               @current.append_data(text) if @current
1371:             end
1372:             parser.listen( :cdata ) do | text |
1373:               @current.append_data(text) if @current
1374:             end
1375:             parser.parse
1376:           rescue REXML::ParseException
1377:             @listener.parse_failure
1378:           end
1379:         end