XMLDistributor delete lock Revision 323735386139 (Fri Mar 13 2009 at 14:58) - Diff Link to this snippet: https://friendpaste.com/5h5B416xemqg2zO6UQxVLV Embed: manni perldoc borland colorful default murphy trac fruity autumn bw emacs pastie friendly Show line numbers Wrap lines 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778package{ import flash.events.Event; public class XMLDistributor { private var xmlLoader:XMLLoader; public var _xmlDataArray:Object; public function XMLDistributor():void { xmlLoader = new XMLLoader(); } public function getXML(url:String):void { xmlLoader.loadXMLFromFile(url); xmlLoader.addEventListener("XML_READY", onDataReady, false, 0, true); } private function onDataReady(event:Event):void { _xmlDataArray = buildArray(xmlLoader.xmlData); } private function buildArray(xml:XML):Object { var xmlAssoc:Object = new Object(); for (var i:uint = 0; i < xml.children().length(); i++) { var xmlNode:XML = xml.children()[i]; xmlAssoc[xmlNode.child("name")] = recursion(xmlNode); } return xmlAssoc; } private function recursion(xml:XML):Object { var xmlAssoc:Object = new Object(); var tempObj:Object; for (var i:uint = 0; i < xml.children().length(); i++) { var xmlNode:XML = xml.children()[i]; if (xmlNode.hasComplexContent()) { //Recurssion tempObj = recursion(xmlNode); } else { // Text node tempObj = xmlNode.toString(); } var name:String = xmlNode.name().localName; var currentElement:Object = xmlAssoc[name]; if (! currentElement) // if there is nothing there yet { xmlAssoc[name] = tempObj; } else if (currentElement is Array) { currentElement.push(tempObj); } else { xmlAssoc[name] = new Array(currentElement, tempObj); } } return xmlAssoc; } }}