Snickers76
01-20-2010, 03:21 PM
I need to get a grip on arrays and XML data but I'm having trouble understanding how to turn xml data into useful data. I was hoping these forums might provide some insight.
I load my XML with this code:
//set values for XML data file
private var XML_URL:String = "http://www.mysite.com/media/locXML.xml";
private var locXML:XML = new XML();
private function getXMLdata():void
{
var locXMLURL:URLRequest = new URLRequest(XML_URL);
var locXMLLoader:URLLoader = new URLLoader(locXMLURL);
locXMLLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(event:Event):void
{
locXML = XML(locXMLLoader.data);
trace("Data loaded. " + locXML);
}
}
I am trying to make the following code into an array populated by that XML data. Everywhere you see a '[]' I need the number to match the number record of the locXML file...
for each (var point[]:XML in locXML.location)
{
pointMarker] = new PointMarker();
pointMarker[].buttonMode = pointMarker[].useHandCursor = true;
var image[]:Loader = new Loader();
image[].load(image[]Req, context);
image[].x = -iconHeight/2;
image[].y = -iconWidth/2;
if (pointMarker[]_motion == true)
{
var iconShimmer[]:MovieClip = new IconShimmer() as MovieClip;
iconShimmer[].x = image[].x;
iconShimmer[].y = image[].y;
pointMarker[].addChild(image[]);
pointMarker[].addChild(iconShimmer[]);
pointMarker[].pointName[] = point[].name;
pointMarker[].name = imageBubbleFile[];
}else{
pointMarker[].addChild(image[]);
pointMarker[].pointName[] = point[].name;
pointMarker[].name = imageBubbleFile[];
}
pointMarker[].pointDesc[] = point[].description;
_map.putMarker(new Location(point[].lat, point[].long), pointMarker[]);
pointMarker[].addEventListener(MouseEvent.CLICK, pointMarker[]_Click);
pointMarker[].addEventListener(MouseEvent.ROLL_OVER, pointMarker[]_RO);
pointMarker[].mouseChildren=false;
}
}
}
here is a small snippet of the XML file:
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<location ID="maplogo">
<name>mapLogo</name>
<lat>31.3731712263342</lat>
<long>-94.08871702323849</long>
<iconFile>town.jpg</iconFile>
<imageFile>type1.swf</imageFile>
<motion>false</motion>
</location>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<location ID="bigstarsupermarket">
<name>Big Star Supermarket</name>
<lat>31.5664202</lat>
<long>-93.4904959</long>
<iconFile>bigStar.jpg</iconFile>
<imageFile>type1.swf</imageFile>
<motion>false</motion>
</location>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
</root>
how can I do that without taking up 2000 lines of code? I was hard coding a number in each one of those '[]' brackets, but that is becoming very painstaking...?
I load my XML with this code:
//set values for XML data file
private var XML_URL:String = "http://www.mysite.com/media/locXML.xml";
private var locXML:XML = new XML();
private function getXMLdata():void
{
var locXMLURL:URLRequest = new URLRequest(XML_URL);
var locXMLLoader:URLLoader = new URLLoader(locXMLURL);
locXMLLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(event:Event):void
{
locXML = XML(locXMLLoader.data);
trace("Data loaded. " + locXML);
}
}
I am trying to make the following code into an array populated by that XML data. Everywhere you see a '[]' I need the number to match the number record of the locXML file...
for each (var point[]:XML in locXML.location)
{
pointMarker] = new PointMarker();
pointMarker[].buttonMode = pointMarker[].useHandCursor = true;
var image[]:Loader = new Loader();
image[].load(image[]Req, context);
image[].x = -iconHeight/2;
image[].y = -iconWidth/2;
if (pointMarker[]_motion == true)
{
var iconShimmer[]:MovieClip = new IconShimmer() as MovieClip;
iconShimmer[].x = image[].x;
iconShimmer[].y = image[].y;
pointMarker[].addChild(image[]);
pointMarker[].addChild(iconShimmer[]);
pointMarker[].pointName[] = point[].name;
pointMarker[].name = imageBubbleFile[];
}else{
pointMarker[].addChild(image[]);
pointMarker[].pointName[] = point[].name;
pointMarker[].name = imageBubbleFile[];
}
pointMarker[].pointDesc[] = point[].description;
_map.putMarker(new Location(point[].lat, point[].long), pointMarker[]);
pointMarker[].addEventListener(MouseEvent.CLICK, pointMarker[]_Click);
pointMarker[].addEventListener(MouseEvent.ROLL_OVER, pointMarker[]_RO);
pointMarker[].mouseChildren=false;
}
}
}
here is a small snippet of the XML file:
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<location ID="maplogo">
<name>mapLogo</name>
<lat>31.3731712263342</lat>
<long>-94.08871702323849</long>
<iconFile>town.jpg</iconFile>
<imageFile>type1.swf</imageFile>
<motion>false</motion>
</location>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<location ID="bigstarsupermarket">
<name>Big Star Supermarket</name>
<lat>31.5664202</lat>
<long>-93.4904959</long>
<iconFile>bigStar.jpg</iconFile>
<imageFile>type1.swf</imageFile>
<motion>false</motion>
</location>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
</root>
how can I do that without taking up 2000 lines of code? I was hard coding a number in each one of those '[]' brackets, but that is becoming very painstaking...?