# File jabber4r/protocol.rb, line 1213 def parse @started = false parser = XMLParser.new("UTF-8") def parser.unknownEncoding(e) raise "Unknown encoding #{e.to_s}" end def parser.default end begin parser.parse(@stream) do |type, name, data| begin case type when XMLParser::START_ELEM case name when "stream:stream" openstream = ParsedXMLElement.new(name) data.each {|key, value| openstream.add_attribute(key, value)} @listener.receive(openstream) @started = true else if @current.nil? @current = ParsedXMLElement.new(name.clone) else @current = @current.add_child(name.clone) end data.each {|key, value| @current.add_attribute(key.clone, value.clone)} end when XMLParser::CDATA @current.append_data(data.clone) if @current when XMLParser::END_ELEM case name when "stream:stream" @started = false else @listener.receive(@current) unless @current.element_parent @current = @current.element_parent end end rescue puts "Error #{$!}" end end rescue XMLParserError line = parser.line print "XML Parsing error(#{line}): #{$!}\n" end end