将属性的XML解析成对象数组列表

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事件,并将得到的对象数组列表作为事件对象的属性传递。

你可能感兴趣的:(xml,object,function,String,import,each)