Ciao, non è particolarmente complicato, innanzi tutto bisogna caricare il file xml dall'esterno utilizzando la classe URLLoader, poi all'interno dell'evento legato al caricamento completato (Event.COMPLETE) si associa il testo ottenuto dall'esterno con un nuovo oggetto XML.
La struttura della nuova classe XML permette di recuperare attributi e nodi in maniera molto più semplice rispetto alla classe corrispondente in AS2 (che per la cronaca esiste anche in AS3 e si chiama ora XMLDocument).
La parte del caricamento è riassumibile in questo semplice codice:
Codice PHP:
var loader:URLLoader = new URLLoader(new URLRequest("test.xml"));
loader.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler (event:Event) {
try {
var xmlObj:XML = new XML(event.target.data);
useXML (xmlObj);
} catch (error:Error) {
trace (error);
}
}
function useXML (xml:XML) {
// azioni da usare quando l'xml è caricato
}
Come puoi notare, ho inserito una funzione esterna all'evento per semplificare la lettura del codice, in questo modo se dovrai caricare un xml potrai usare sempre la parte di codice fino alla funzione useXML, mentre cambierai le azioni dentro useXML a seconda di quello che devi realizzare con i dati del file esterno.
Prendendo come esempio l'xml proposto ad esempio nella guida di flash (cs3), possiamo vedere quanto sia semplice accedere a nodi ed attributi dei vari nodi dell'xml senza dover scendere a cercare childNodes, firstChild e quant'altro.
codice:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee ssn="123-123-1234">
<name first="John" last="Doe"/>
<address>
<street>11 Main St.</street>
<city>San Francisco</city>
<state>CA</state>
<zip>98765</zip>
</address>
</employee>
<employee ssn="789-789-7890">
<name first="Mary" last="Roe"/>
<address>
<street>99 Broad St.</street>
<city>Newton</city>
<state>MA</state>
<zip>01234</zip>
</address>
</employee>
</employees>
La funzione useXML, in base sempre all'esempio della guida di flash, si presenterà in questo modo:
Codice PHP:
function useXML (xml) {
trace(xml.employee[0].address.zip); // 98765
trace(xml.employee[1].@ssn); // 789-789-7890
trace(xml.employee.name); // <name first="John" last="Doe"/>
// <name first="Mary" last="Roe"/>
trace(xml..zip[0]); // 98765
trace(xml..@ssn[1]); // 789-789-7890
trace(xml..name); // <name first="John" last="Doe"/>
// <name first="Mary" last="Roe"/>
trace(xml.employee[0].address.*); // <street>11 Main St.</street>
// <city>San Francisco</city>
// <state>CA</state>
// <zip>98765</zip>
}
Se metti in relazione questo codice con la struttura dell'xml noterai subito due cose:
1- è possibile accedere agli attributi di un nodo semplicemente usandone il nome preceduto dalla @.
2- è possibile entrare nei nodi "interni" direttamente dalla radice principale (nel nostro caso l'oggetto "xml") usando il doppio punto e dichiarando esplicitamente il valore del nodo a cui si vuole accedere, come se fosse un array.
Non c'è da sapere molto altro, più che altro bisogna fare un po' di test per verificare la facilità di recupero dei nodi e valori in essi contenuti.