PDA

View Full Version : reading an xml file , take the path of another xm file from it and read it..



adarsh123
June 16th, 2009, 07:07 AM
Actually i'm facing one situation while reading an xml file externally whose path is provided in another xml file..i'm able to read it properly ..but excution goes to next instruction b'fore it completely loads.
pls assist me in this regard..

here is my code.


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="serv.send()" viewSourceURL="srcview/index.html">

<mx:Script>

<![CDATA[

//import mx.preloaders.Preloader

import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import flash.display.Sprite;
import mx.controls.Alert;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;


public var urlLoader:URLLoader;
//public var preLoader:Pre;


public var externalXML:XML;
//public var externalXML123:XML;

public var xmltree:XmlTree;



private function init(event:ResultEvent):void

{
var xml:XML = new XML(event.result);
xmltree = new XmlTree();

//trace(xml.toString());

//trace(xml.Model.path.@File);


trace(xml.Model);
trace(xml.Model.path);
//loadXML1("ProjectInfo1.xml");



loadXML1(xml.Model.path.@File);

//xml.Model.path=externalXML123;


xmltree.loadXml(xml);
xmltree.width = 800;
xmltree.height = 800;
this.addChild(xmltree);
}

public function loadXML1(url:String):void {


if (urlLoader != null) {
urlLoader.close(); }

urlLoader = new URLLoader();
//preLoader=new pre();


urlLoader.addEventListener(Event.COMPLETE, onXMLLoad);
urlLoader.load(new URLRequest(url));
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
//preLoader.pre();

}


private function onXMLLoad(event:Event):void

{

externalXML = XML(event.target.data);
//externalXML123=externalXML

trace("loader is a URLLoader!");
trace(externalXML.toString());



/*if (loader != null)
{
externalXML = new XML(loader.data);

trace("loader is a URLLoader!");
//trace(externalXML.tostring());
}
else
{
trace("loader is not a URLLoader!");
} */


}

private function progressHandler(event:ProgressEvent):void {
var perc:Number = event.bytesLoaded / event.bytesTotal; //while(perc != 100);



trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}



private function serv_fault(evt:FaultEvent):void {
Alert.show(evt.fault.faultString);
}


]]>
</mx:Script>

<mx:String id="XML_URL">assets/ProjectInfo1.xml</mx:String>

<mx:HTTPService id="serv" url="{XML_URL}" resultFormat="text" result="init(event);" fault="serv_fault(event);"/>



</mx:Application>:(