Hi,
I need a little help about a dynamic array from an xml file. I have an issue put dynamic number of nodes into an array and then populate another array. Don’t know if i’m really clear so here’s what I do so far.
Here’s my xml file:
<services>
<service menu="MENU 1">
<title>Title.</title>
<txt><![CDATA[Content here.]]></txt>
<projects>
<project Uid="1" thumbnail="image1-tb.jpg"/>
<project Uid="2" thumbnail="image2-tb.jpg"/>
<project Uid="3" thumbnail="image3-tb.jpg"/>
</projects>
</service>
<service menu="MENU 2">
<title>Title.</title>
<txt><![CDATA[Content here.]]></txt>
<projects>
<project Uid="4" thumbnail="image1-tb.jpg"/>
<project Uid="5" thumbnail="image2-tb.jpg"/>
</projects>
</service>
</services
Now the code:
//load the XML file
xmlContent = new XML();
xmlContent.ignoreWhite = true;
xmlContent.load(_root.XML_FOLDER+_root.SERVICES_FILE);
xmlContent.onLoad = function(success) {
if (success) {
var startServices:XMLNode = xmlContent.firstChild;
var nbServices:Number = xmlContent.firstChild.childNodes.length;
var totalServicesComplete:Number = nbServices-1;
var menuArray:Array = new Array();
var titleArray:Array = new Array();
var contentArray:Array = new Array();
var thumbArray:Array = new Array();
for (var i:Number = 0; i<nbServices; i++) {
menuArray.push(startServices.childNodes*.attributes.menu);
titleArray.push(startServices.childNodes*.childNodes[0].childNodes);
contentArray.push(startServices.childNodes*.childNodes[1].firstChild.nodeValue);
for (var j:Number = 0; j<startServices.childNodes*.childNodes[2].childNodes.length; j++) {
//?????
}
}
} else {
contentTxt.htmlText = "<br /> XML file failed to load!";
}
};
I’m not sure about how I can have an array that’s gonna look like:
id:1 thumbnail:th1.jpg, id:2 thumbnail:th2.jpg, id:3 thumbnail:th3.jpg
for every node. So basically an array of arrays. My main problem is how then I can retrieve the length of each array and its elements.
I tried something like:
for (var j:Number = 0; j<startServices.childNodes*.childNodes[2].childNodes.length; j++) {
var tileObject:Object = {Uid:startServices.childNodes*.childNodes[2].childNodes[j].attributes.Uid, thumbnail:startServices.childNodes*.childNodes[2].childNodes[j].attributes.thumbnail};
thumbArray.push(tileObject);
}
Thanks for your help.