rendered paste body def NewsEntry.parseREXML(message) xml = REXML::Document.new(message); ret = Array.new xml.elements.each("//newsitem"){ |xmlitem| newsitem = NewsEntry.new() newsitem.id = xmlitem.attributes["id"].to_s(); newsitem.date = xmlitem.elements["date"].text; newsitem.kill = xmlitem.elements["kill"].text == 'true'; newsitem.held = xmlitem.elements["held"].text == 'true'; newsitem.result = xmlitem.elements["result"].text; newsitem.type = xmlitem.elements["type"].text; newsitem.attackerid = xmlitem.elements["attackerId"].text; newsitem.defenderid = xmlitem.elements["defenderId"].text; newsitem.attackername = xmlitem.elements["attacker"].text; newsitem.defendername = xmlitem.elements["defender"].text; newsitem.attackerclan = xmlitem.elements["attackerClan"].text; newsitem.defenderclan = xmlitem.elements["defenderClan"].text; ret.insert(-1, newsitem); } ret end def NewsEntry.parse(message) reader = XML::Parser.string(message) document = reader.parse root = document.root ret = Array.new; child = root.child while child unless child.blank? then newsitem = NewsEntry.new newsitem.id = child['id'] subchild = child.child while subchild unless subchild.blank? case subchild.name when "date" newsitem.date = subchild.child.to_s when "type" newsitem.type = subchild.child.to_s when "kill" newsitem.kill = subchild.child.to_s=='true' when "held" newsitem.held = subchild.child.to_s=='true' when "result" newsitem.result = subchild.child.to_s when "attackerId" newsitem.attackerid = subchild.child.to_s when "attacker" newsitem.attackername = subchild.child.to_s when "attackerClan" newsitem.attackerclan = subchild.child.to_s when "defenderId" newsitem.defenderid = subchild.child.to_s when "defender" newsitem.defendername = subchild.child.to_s when "defenderClan" newsitem.defenderclan = subchild.child.to_s end #case end subchild = subchild.next end ret.insert(-1, newsitem) end child = child.next end ret end