Caricare un documento XML su Flash
Vediamo subito come utilizzare Flash con l'XML procedendo per gradi.
Partiamo subito da un esempio semplice, ovvero un file di testo statico memorizzato sul nostro computer.
Questo file di testo avrà il seguente contenuto XML:
<voli>
<volo id="AZ1570">
<partenza h="06:45">Cagliari</partenza>
<arrivo h="07:50">Roma</arrivo>
</volo>
<volo id="AZ1572">
<partenza h="07:20">Cagliari</partenza>
<arrivo h="08:25">Roma</arrivo>
</volo>
<volo id="AZ1578">
<partenza h="09:05">Cagliari</partenza>
<arrivo h="10:10">Roma</arrivo>
</volo>
<volo id="AZ1574">
<partenza h="10:50">Cagliari</partenza>
<arrivo h="11:55">Roma</arrivo>
</volo>
<volo id="AZ1568">
<partenza h="12:00">Cagliari</partenza>
<arrivo h="13:05">Roma</arrivo>
</volo>
<volo id="AZ8111">
<partenza h="12:00">Cagliari</partenza>
<arrivo h="13.00">Roma</arrivo>
</volo>
<volo id="AZ1576">
<partenza h="13:25">Cagliari</partenza>
<arrivo h="14:30">Roma</arrivo>
</volo>
</voli>
Senza dilungarci più di tanto nella spiegazione dell'XML possiamo dire:
1) il primo TAG dell'XML <?xml version="1.0" encoding="UTF-8"?>
indica la versione e la codifica dei caratteri utilizzata, e non è indispensabile per Flash, anzi possiamo tranquillamente ometterlo.
2) Tutti i nodi stanno all'interno del nodo radice <voli>
Vediamo ora il codice Action Script che ci permette di leggere un documento XML.
filexml = "orari.xml";
ApriXML();
function ApriXML() {
mioxml = new XML();
myarray = new Array();
mioxml.load(filexml);
mioxml.onLoad = ElaboraXML;
function ElaboraXML(success) {
if (mioxml.loaded) {
trace(mioxml);
}
}
}
Copiamo questo codice su un fotogramma chiave di Flash, salviamo il file nella stessa directory dove abbiamo il file XML e mandiamo in esecuzione il filmato con Ctrl+Enter. Si aprirà in questo modo la finestra Output di Flash che ci mostra proprio il nostro documento XML!
Analizziamo il codice Action Script per capirne meglio il funzionamento. Prima di tutto vi consiglio di avere a portata di mano il Dizionario di Action Script di Flash.
La prima riga di codice indica il percorso del documento XML che salviamo su una variabile chiamata filexml.
In questo caso abbiamo
filexml = "orari.xml";
che è appunto il nostro file di testo. Nel caso di file statici l'estensione potrebbe anche non essere .xml ma di qualunque tipo (.txt , .html etc etc) o addirittura inventata da noi. Nel caso invece il documento XML sia prodotto in modo dinamico da uno script la chiamata sarà del tipo script.estensione (ad esempio script.asp o script.php).
La seconda riga di codice ApriXML(); richiama una funzione.
La funzione ApriXML a sua volta:
1) mioxml = new XML();
crea un nuovo documento XML
2) myarray = new Array();
crea un nuovo array (che per adesso non viene utilizzato ma servirà negli esempi successivi)
3) mioxml.load(filexml);
carica un documento XML dall'URL specificato e sostituisce il contenuto dell'oggetto XML specificato con i dati XML scaricati. Tale URL deve trovarsi nello stesso sottodominio dell'URL che contiene il filmato.
4) mioxml.onLoad = ElaboraXML;
richiama la funzione ElaboraXML una volta che il documento è stato caricato correttamente (quindi l'esito della chiamata onLoad è uguale a "success")
La funzione ElaboraXML verifica che il documento XML sia stato caricato completamente (if (mioxml.loaded) {...}
) quindi attraverso la funzione trace scriviamo sulla finestra di Output in modalità prova filmato il documento XML.
Ovviamente questo è solo il primo esempio e nelle nostre applicazioni il codice trace(mioxml); sarà sostituito dal codice Action Script che ci permetterà di estrappolare i dati dall'XML e visualizzarli sul nostro filmato secondo la nostra interfaccia grafica.
Abbiamo quindi caricato il nostro primo documento XML con Flash. Le righe di codice che abbiamo scritto saranno alla base di ogni vostra applicazione dinamica Flash-XML e ben presto vedrete come sarà possibile riutilizzare questo codice nelle vostre applicazioni apportando solo determinate modifiche.
Prima di procedere è bene fare un piccolo riepilogo delle funzioni e metodi utilizzati finora per l'XML e per far questo sarebbe opportuno che consultaste in Dizionario di Action Script di Flash cercando:
- XML (oggetto)
- XML.load
- XML.loaded
- XML.onLoad
Per quanto riguarda il metodo XML.load vorrei aggiungere alcune considerazioni poco documentate sul manuale. Come abbiamo già detto (e come è indicato anche sul Dizionario di Action Script) il documento XML che viene caricato attraverso tale metodo deve trovarsi nel sottodominio che contiene il filmato. Questo vale solo quando il filmato viene caricato sul Browser, per questioni di protezione e restrizioni del plug-in del browser stesso ( potete leggere questo articolo in inglese http://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm). Se però apriamo un filmato in locale è richiamiamo un documento XML da un determinato dominio (http://www.nomedominio.com/documento.xml) e ovviamente siamo connessi ad Internet il nostro filmato caricherà tranquillamente il
documento XML.
Questo ci permette di sviluppare applicazioni interamente in Flash o eseguibili (.EXE) che girano in locale su un PC connesso ad internet, caricando dati XML dal web!
Volete fare subito una prova? siete connessi ad internet? ok... perfetto allora sostituite al codice scritto prima
filexml = "orari.xml";
questo codice
filexml = "https://www.html.it/news_xml.xml";
Ora mandate in esecuzione il filmato e vedrete nella finestra dell'Output l'XML delle news di HTML.it!