package utils { import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; /** * @author Flying */ public class XMLParser extends EventDispatcher { public var parsedData : Array; public static const PARSE : String = "parse"; /** * @param loader 加载器 */ public function XMLParser(loader : URLLoader) { loader.addEventListener(Event.COMPLETE, completeHandler); } public function completeHandler(event : Event) : void { var item_xmlList : XMLList = XML(URLLoader(event.target).data).children(); var xmlObj_array : Array = new Array(); var item_xml : XML; for each (item_xml in item_xmlList) { var tempObj : Object = new Object(); var node : XML; for each (node in item_xml.attributes()) { //用localName方法获取XML对象的限定名称 var obj : Object = node.localName(); tempObj[obj] = item_xml.@[obj]; } xmlObj_array.push(tempObj); } parsedData = xmlObj_array; dispatchEvent(new Event(XMLParser.PARSE)); } } }
此类基于EventDispatcher类,构造时以URLLoader对象作为参数,当XML解析完后会派发PARSE事件,并将得到的对象数组列表作为事件对象的属性传递。