Ok, vediamo se riusciamo a fare il punto della situazione con questo esempio:
Codice PHP:
// creo un puntatore per l'xml da caricare
var voli:XML;
// imposto un urlrequest per la richiesta sull'url dell'xml
var richiesta:URLRequest = new URLRequest("test.xml");
// creo un urlloader per caricare il file esterno
var caricatore:URLLoader = new URLLoader();
// carico il file esterno richiamando la funzione load
caricatore.load(richiesta);
// aggiungo un ascoltatore per l'evento "COMPLETE" che determina il momento in cui l'xml è stato caricato
caricatore.addEventListener(Event.COMPLETE, loadXML);
// nella funzione loadXML legata all'evento COMPLETE tento di associare a "voli" il contenuto del file xml caricato dall'esterno
// e in caso positivo avvio la funzione parseXML in cui utilizzerò i dati caricati come preferisco
function loadXML (evt:Event):void {
try {
voli = new XML(evt.target.data);
parseXML();
} catch (err:Error) {}
}
function parseXML ():void {
/*
i nodi e i parametri all'interno dell'xml possono essere letti accedendovi
in maniera diretta come se fossero degli array, ad esempio poniamo di voler
recuperare tutti gli id presenti nell'xml, il tipo di dato che si "crea" è un XMLList
e i parametri sono raggiungibili aggiungendo dopo i due ".." il carattere "@",
dopodichè è possibile scorrerli come indici di quell'array sfruttando la funzione length() per scorrere gli indici
*/
var id:XMLList = voli..@id;
for (var i:uint=0; i<id.length(); i++) {
trace(id[i])
}
/*
nel caso che invece vogliamo recuperare i valori dentro ai nodi, usiamo solo i due punti
quindi ponendo di voler recuperare partenze e arrivi, avremo questo
*/
var partenze:XMLList = voli..partenza;
var arrivi:XMLList = voli..arrivo;
for (var j:uint=0; j<partenze.length(); j++) {
trace("partenza da: "+partenze[j]+" alle "+partenze[j]..@h);
trace("arrivo a: "+arrivi[j]+" alle "+arrivi[j]..@h);
}
}