10-06-2009

Actionscript3 load xml file as3

xml as3This example shows what to include and some sample code for loading xml data in an AS3 class.

You can use the URLLoader class to load the xml :

var myXML:XML = new XML();
var XML_URL:String = "http://www.example.com/Sample3.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener("complete", xmlLoaded);
 
function xmlLoaded(event:Event):void
{
    myXML = XML(myLoader.data);
    trace("Data loaded.");
}

Include the following :

// import the following:
	import flash.events.Event; 
	import flash.net.*;

Example AS3 class loading xml and looping through data:

After loading the xml file you can loop through it's data using E4X syntax.

Here's an example. Assuming the loaded xml file looks like this:

<game>
	<level>
		<leveltitle>Dieren</leveltitle>
		<identifyme>
			<title>Leeuw</title>
			<image>data/images/lion.jpg</image>
			<sound>data/sounds/lion3.wav</sound>
			<symbol>L</symbol>
		</identifyme>	
		<identifyme>
			<title>Tijger</title>
			<image>data/images/tiger-picture.jpg</image>
			<sound>data/sounds/lion3.wav</sound>
			<symbol>L</symbol>
		</identifyme>	
	</level>
	<level>
		<leveltitle>Dieren II</leveltitle>
		<identifyme>
			<title>Varken</title>
			<image>data/images/pig.jpg</image>
			<sound>data/sounds/pig.wav</sound>
			<symbol>V</symbol>
		</identifyme>	
		<identifyme>
			<title>Olifant</title>
			<image>data/images/olifant.jpg</image>
			<sound>data/sounds/elephant.wav</sound>
			<symbol>O</symbol>
		</identifyme>	
	</level>
</game>

A sample ActionScript 3 class loading and processing this:

package {
	import flash.display.*;
	import flash.events.*; 
	import flash.net.*;
 
	public class Main extends MovieClip{
		private var levelXML:XML; 
		private var myLoader:URLLoader; 
 
		public function Main(){
			levelXML = new XML();
			var XML_URL:String = "data/data.xml";
			var myXMLURL:URLRequest = new URLRequest(XML_URL);
			myLoader = new URLLoader(myXMLURL);
			myLoader.addEventListener("complete", startApp);
		}
 
		private function startApp(eventDataLoaded:Event){
			levelXML = XML(myLoader.data);
			for each (var level:XML in levelXML.level){
				trace(level.leveltitle);
				trace(level.identifyme);
			}
 
		}
	}
}

Comments:

Your comment:

»
Soumya Vinod 17/01/2012, 1:01 pm
Found another relatively simpler way to do the same,posted at http://bbso.wordpress.com/2012/01/16/loading-xml-in-flash-as3

 

[x]