Menu:

Sponsor

Discover Master of Alchemy, our first iPad/iPhone and iPod touch game!

Follow Me

 

Forum's topics

Latest Files

Archives

Top Rated

Categories

Photo Gallery


Alessandro Crugnola on January 13, 2004 in actionscript , flash

XML2Object

This class, that is just a translation of a simple set of function written for Flash MX, translates any kind of XML document into a readable Flash Object. This could be the core for projects XML oriented..
in fact i work often on xml based projects...

/**
* @class it.sephiroth.XML2Object
* @author Alessandro Crugnola
* @version 1.0
* @description return an object with the content of the XML translated
* NOTE: a node name with "-" will be replaced with "_" for flash compatibility.
* for example will become FIRST_NAME
* If a node has more than 1 child with the same name, an array is created with the children contents
* The object created will have this structure:


* - obj {

* nodeName : {

* attributes : an object containing the node attributes

* data : an object containing the node contents

* }

* @usage data = new XML2Object().parseXML( anXML);
*/

//import utils.string

class it.sephiroth.XML2Object extends XML {
private var oResult:Object = new Object ();
private var oXML:XML;
/**
* @method get xml
* @description return the xml passed in the parseXML method
* @usage theXML = XML2Object.xml
*/

public function get xml():XML{
return oXML
}
/**
* @method public parseXML
* @description return the parsed Object
* @usage XML2Object.parseXML( theXMLtoParse );
* @param sFile XML
* @returns an Object with the contents of the passed XML
*/

public function parseXML (sFile:XML):Object {
this.oResult = new Object ();
this.oXML = sFile;
this.oResult = this.translateXML();
return this.oResult;
}
/**
* @method private translateXML
* @description core of the XML2Object class
*/

private function translateXML (from, path, name, position) {
var xmlName:String;
var nodes, node, old_path;
if (path == undefined) {
path = this;
name = "oResult";
}
path = path[name];
if (from == undefined) {
from = new XML (this.xml);
from.ignoreWhite = true;
}
if (from.hasChildNodes ()) {
nodes = from.childNodes;
if (position != undefined) {
var old_path = path;
path = path[position];
}
while (nodes.length > 0) {
node = nodes.shift ();
xmlName = node.nodeName.split("-").join("_");
if (xmlName != undefined) {
var __obj__ = new Object ();
__obj__.attributes = node.attributes;
__obj__.data = node.firstChild.nodeValue;
if (position != undefined) {
var old_path = path;
}
if (path[xmlName] != undefined) {
if (path[xmlName].__proto__ == Array.prototype) {
path[xmlName].push (__obj__);
name = node.nodeName;
position = path[xmlName].length - 1;
} else {
var copyObj = path[xmlName];
path[xmlName] = new Array ();
path[xmlName].push (copyObj);
path[xmlName].push (__obj__);
name = xmlName;
position = path[xmlName].length - 1;
}
} else {
path[xmlName] = __obj__;
name = xmlName;
position = undefined;
}
}
if (node.hasChildNodes ()) {
this.translateXML (node, path, name, position);
}
}
}
return this.oResult;
}
}







An Example usage with this file:
http://www.sephiroth.it/tutorials/flashPHP/indice.xml

import it.sephiroth.XML2Object;
var oXML:XML = new XML ();
var sXML:String = "indice.xml";
oXML.ignoreWhite = true;
function xmlLoaded (success:Boolean) {
if (success) {
trace (success);
_root.ObjFromXML = new XML2Object ().parseXML (this);
delete this
}
}
oXML.onLoad = xmlLoaded;
oXML.load (sXML);

 

Bookmark and Share

 

Tags: flash component , xml , xmlobject 

 

1 comments
Please find the task which i am working on - I created a flash file with name lessoncounter.fla. I am working in flashcs3 and actionscript2. I have a screen with 3 parts : 1) Application towards the left side full 2) Courses towards the right side top half 3) Lessons towards the right side bottom half. I have a list of applications and each application consists of list of courses and each course consists of list of lessons. When i open my swf file screen will be with just an application list and it will call all list of applications from lessoncounter.xml into the application towards the left side. When i click on any application it will call the list of courses from lessoncounter.xml. When i click on any course it will call the list of lessons from lessoncounter.xml. When i click on any lessons it has to hide application+course+lessons and it has to call that particular lesson swf into that screen area. This is exactly the task. Help in working on this file


Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)


Type the characters you see in the picture above.





 

TrackBacks

TrackBack URL for this entry: http://www.sephiroth.it/cgi-bin/mt/mt-tb.cgi/175