0

Hi, I am trying to retrieve the contents of my XML file and use the variables later on in the script;
I have the following actionscript code

// Get XML Vars
var xml:XML;
var urlLoader = new URLLoader();
var songdataurl:String = '0';
urlLoader.addEventListener(Event.COMPLETE,onXMLLoaded);
urlLoader.load(new  URLRequest("data.xml"));

function onXMLLoaded(e:Event):void{
       xml =  new XML(e.target.data);
	   GetSongData();
}
function GetSongData():void{
       songdataurl = xml..song[0];
}
trace(songdataurl);

//Use songdataurl in script

and the following is the contents of data.xml

<?xml version="1.0"  encoding="UTF-8"?>
<songs>
	<song  title="A Song" artist="Joe Blogs" album="An Album">/getsong/?ID=12345&Hash=12345678&IP=0.0.0.0</song>
</songs>

I'm trying to get the contents of the <song></song> tag and use it later on in my script.

Thanx,
Sam

3
Contributors
5
Replies
6
Views
8 Years
Discussion Span
Last Post by samarudge
0

This is the first time I have ever used AS3, I just want the variable to be available further on in the script (outside onXMLLoaded function)

0

I don't know if this is the best practise. It probably isn't but you could declare a global variable at the very top of the code then assign it later.

1

Mr samarudge,

Your code is written in a right way!, and It works. But whats the problem is before reading your xml, the trace statement is executed once. You should give time to load your xml and after that only have to use trace statement. Thats the problem!.

you can test this by using the below code.

var songdataurl:String;
var xml:XML;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE,onXMLLoaded);
urlLoader.load(new  URLRequest("data.xml"));

function onXMLLoaded(e:Event):void{
       xml =  new XML(e.target.data);
	   GetSongData();
}
function GetSongData():void{
       songdataurl = xml..song[0];
}

var timer:Timer=new Timer(500);
timer.addEventListener(TimerEvent.TIMER,process);
timer.start();
function process(e:TimerEvent):void
{
trace(songdataurl);
}

Hope this helps!

Votes + Comments
Great response, accurate code
0

Mr samarudge,

Your code is written in a right way!, and It works. But whats the problem is before reading your xml, the trace statement is executed once. You should give time to load your xml and after that only have to use trace statement. Thats the problem!.

you can test this by using the below code.

var songdataurl:String;
var xml:XML;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE,onXMLLoaded);
urlLoader.load(new  URLRequest("data.xml"));

function onXMLLoaded(e:Event):void{
       xml =  new XML(e.target.data);
	   GetSongData();
}
function GetSongData():void{
       songdataurl = xml..song[0];
}

var timer:Timer=new Timer(500);
timer.addEventListener(TimerEvent.TIMER,process);
timer.start();
function process(e:TimerEvent):void
{
trace(songdataurl);
}

Hope this helps!

GENIUS =D
Thanx, marked solved and rep added :P

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.