Hi, you might wanna search for xml2obj or xml2object, this has been implemented a million times before:) greetz JC
On 7/11/07, fred evers <[EMAIL PROTECTED]> wrote:
Hey FlashCoders, Talkin' AS 2 here. I am trying to do something that seems obvious. This was easy in AS1 adding methods and properties via '.prototype'. But obviously I am doing something wrong! Kudos and eternal gratitude to the Coder who can tell me what it is: I am parsing XML with this structure: <root> <module> <title>L1 title</title> <section> <title>L2 title</title> <screen url="screen1.swf"/> <screen url="screen2.swf"/> </section> </module> </root> I want to create an object in the root of an AS 2 app, such as: var course:Course = new Course("theXML.xml");// file at same level as root swf After creating this class, I want to access the arrays that are part of the instantiated 'course' Object: trace(course.modules[0].length);// returns 0. I cannot access the data. Wha Zup????????? Source available at http://www.cyburth.com/Flash_Source.zip file: module.as looks like this: Class Course { private var modules:Array = new Array(); private var moduleTitles:Array = new Array(); // constructor public function module(xml:String0{ this.loadDataFile(url); } public function loadDataFile(url:String):Void { var crsData:XML = new XML(); crsData.ignoreWhite = true; crsData.onLoad = function(success) { this.tmpModules = new Array(); this.tmpModuleTitles = new Array(); var modNumb:Number=0; for(var i:Number = 0; i< crsData.firstChild.childNodes.length;i++){ var node:XMLNode = crsData.firstChild.childNodes [i]; if (node.nodeName == "module"){ var mod:Object = new module(node); trace("So this mod title is -> "+mod.title); this.tmpModules.push(mod.modules); this.tmpModuleTitles.push(mod.title); }// End if name == module } modules = this.tmpModules; moduleTitles = this.tmpModuleTitles; };// end onLoad // Load the XML crsData.load(url); } } // file module.as looks like this: class module { public var sections:Array = new Array(); public var sectionTitles:Array = new Array(); public var title:String = ""; public function module(mod:XMLNode){ // This is the module class's constructor trace(mod);// shows XML node correctly for(var j:Number = 0; j<mod.childNodes.length;j++){ if(mod.childNodes[j].nodeName == "title"){ title = mod.childNodes [j].childNodes[0].nodeValue; trace("The title of this module is: "+title);// returns title correctly } else if(mod.childNodes[j].nodeName == "section"){ var sec:section = new section( mod.childNodes[j]); // points to class defined in file 'section.as'. Similar structure as this class. sections.push(sec.screens); sectionTitles.push(sec.section_title); trace(" section "+j+": "+sec.section_title+" urls = "+sec.screens) //returns correct values } } } } // file 'section.as' looks similar. it parses an xml node, puts child nodes into an array. _______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com
_______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com