View Single Post

  #1 (permalink)  
Old 19-09-07, 13:24
Flep Flep is offline
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,490
Rep Power: 6
Flep is on a distinguished road
Come caricare un file XML esterno con AS 3.0

Con Actionscript 3.0 la Classe XML appare cambiata profondamente.
La Classe XML è stata mossa al package flash.xml ed il suo nome è stato cambiato a XMLDocument per evitare il conflitto con la nuova Classe XML a cui è stata implementato l' ECMAScript per XML.
Parto col dire che i metodi load() e onLoad() di AS 2.0 sono stati rimossi per cui adesso si utilizzano le Classi URLLoader e URLRequest per caricare il file XML esterno.
Si aggiunge un listener all'istanza di URLLoader e sull'evento COMPLETE si parte col fare il parse dell'xml, cioè si passano i dati dell'istanza di URLLoader ad una nuova istanza di della Classe XML poi si crea una nuova istanza di XMLDocument con cui si fa il parse dell' istanza XML.
Da spiegare è più difficile che da fare perciò entriamo nel vivo : Questo è il file XML (molto semplice per capire bene l'esempio):
HTML Code:
<?xml version="1.0" encoding="UTF-8"?>
<setting>
	<parameters color="0xFFFFFF" name="Filippo" gen="male" age="34" picturePath="filippo.jpg">
	</parameters>
</setting>
E questa è la Classe che ho costruito:
Code:
package
{
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.events.*;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.xml.*;
	
	public class LoadingXML extends MovieClip
	{
		public function LoadingXML()
		{
			this.loadXML();
		}
		private function loadXML():void
		{
			var loader:URLLoader=new URLLoader();
			loader.addEventListener(Event.COMPLETE,completeHandler);
		
			var request:URLRequest=new URLRequest('setting.xml');
			try 
			{
				loader.load(request);
			} 
			catch(error:Error) 
			{
				trace('Unable to load requested document.');
			}
		}
		private function completeHandler(event:Event):void
		{
			var loader:URLLoader=URLLoader(event.target);
			var result:XML=new XML(loader.data);
			var myXML:XMLDocument=new XMLDocument();
			myXML.ignoreWhite=true;
			myXML.parseXML(result.toXMLString());
			var node:XMLNode=myXML.firstChild;
			trace('Colore= '+node.firstChild.attributes['color']);
			trace('Nome= '+node.firstChild.attributes['name']);
			trace('Genere= '+node.firstChild.attributes['gen']);
			trace('Età= '+node.firstChild.attributes['age']);
			trace('Path immagine= '+node.firstChild.attributes['picturePath']);
			trace('Valore: ' +node.firstChild);
		}
	}
}
e questo è l'output ottenuto:
Quote:
Colore= 0xFFFFFFNome= FilippoGenere= maleEtà= 34Path immagine= filippo.jpg
Buon divertimento !

Allego i files sorgente:
Attached Files
File Type: zip XML.zip (6.4 KB, 119 views)

__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 05-06-08 at 00:00..
Reply With Quote