pickles/static/contrib/mediaplayer-3.15/source/com/jeroenwijering/utils/XMLParser.as

84 lines
No EOL
1.7 KiB
ActionScript
Executable file

/**
* Parse XML file and return a simple, associative array.
*
* @author Jeroen Wijering
* @version 1.2
**/
class com.jeroenwijering.utils.XMLParser {
/** Flash XML object the file is loaded into. **/
private var input:XML;
/** The object the XML is parsed into **/
private var output:Object;
/** Constructor, sets up XML object **/
function XMLParser() {};
/** Start parsing **/
public function parse(lnk:String) {
var ref = this;
input = new XML();
output = new Object();
input.ignoreWhite = true;
input.onLoad = function(scs:Boolean) {
if(scs) {
ref.processRoot();
} else {
ref.onError();
}
};
if(_root._url.indexOf("file://") > -1) {
input.load(lnk);
} else if(lnk.indexOf('?') > -1) {
input.load(lnk+'&'+random(999));
} else {
input.load(lnk+'?'+random(999));
}
};
/** Process the root XML node **/
private function processRoot() {
processNode(input.firstChild,output);
delete input;
onComplete(output);
};
/** Process a specific node **/
private function processNode(nod:XMLNode,obj:Object) {
obj['name'] = nod.nodeName;
for(var att in nod.attributes) {
obj[att] = nod.attributes[att];
}
if(nod.childNodes.length < 2 && nod.firstChild.nodeName == null) {
obj['value'] = nod.firstChild.nodeValue;
} else {
obj['childs'] = new Array();
var chn = nod.firstChild;
var i = 0;
while(chn != undefined) {
var cob = new Object();
processNode(chn,cob);
obj['childs'].push(cob);
chn = chn.nextSibling;
i++;
}
}
};
/** Invoked when parsing is completed. **/
public function onComplete(obj:Object) {};
/** Invoked when parsing is completed. **/
public function onError() {};
}