.XMLNITRO e XML:ACK
Il parsing XML, al tempo del Flash 5, non era sicuramente il massimo per efficienza e velocità. Nel Flash MX è stato notevolmente migliorato, ma nel caso in cui sia necessario ancora utilizzare il Flash 5, si può ricorrere a due eccezionali risorse create da Brandon Hall della Fig Leaf Software
- XMLnitro: rimpiazza il metodo parseXML
della Classe XML, velocizzandone le prestazioni, e rendendo funzionale la proprietà ignoreWhite
anche per le versioni del player precedenti alla 5,0,41,0: il file as può essere scaricato dall'elenco a destra in questa pagina.
Una volta scaricato, perchè venga incluso nel filmato Flash, sarà sufficiente scrivere nel primo frame:
#include "xmlnitro.as"
- XML:ACK : scaricabile dalla stessa pagina dell'XMLnitro, permette di parsare file XML di notevoli dimensioni senza generare errori e senza creare loop infiniti.
Caricare file xml da un dominio differente
Per questioni di sicurezza, descritte nel Security White Paper, un filmato swf non può caricare variabili da una sorgente di dati contenuta in un altro dominio. Facciamo un esempio.
Il filmato http://www.primodominio.com/movie.swf
può caricare il file xml il cui indirizzo è http://www.primodominio.com/cartella/file.xml
dal momento che entrambi risiedono nello stesso dominio (primodominio.com).
Al contrario, il filmato http://www.primodominio.com/movie.swf
non può caricare il file xml il cui indirizzo è http://www.secondodominio.com/cartella/file.xml
dato che risiedono in due domini diversi (primodominio.com e secondodominio.com).
Per risolvere questo problema ci sono due diverse soluzioni: la prima, prevede che lo sviluppatore abbia il controllo di entrambi i domini, la seconda che lo abbia solo per quello con il filmato swf.
Lo sviluppatore controlla entrambi i domini:
- viene creato il filmato "loader.swf" e uploadato nello stesso dominio del file xml
- il filmato "loader.swf" carica correttamente il file xml, dal momento che risiede nello stesso dominio
- il filmato "movie.swf" carica con il
loadMovie
il filmato "loader.swf", e ne estrae i dati caricati.
Questo sistema funziona correttamente per il Flash Player fino alla versione 5: a partire dal Flash Player 6, il filmato "loader.swf" deve esplicitamente permettere al filmato "movie.swf" di accedere ai propri dati. Questo avviene scrivendo, nel primo frame di quot;loader.swf", la seguente riga di codice:
System.security.allowDomain("primodominio.com");
che significa: "permetti ai filmati residenti nel dominio 'primodominio.com' di accedere ai dati contenuti in questo filmato".
Lo sviluppatore controlla solo il dominio con il filmato swf:
In questo caso, è necessario ricorrere ad uno script server side. Lo script (asp, php, cfm) deve risiedere nello stesso dominio del filmato: il filmato richiama la pagina nel proprio dominio, che a sua volta richiama il file xml nell'altro dominio, e ne restituisce i dati al filmato stesso.
Nella TechNote 16520 del Macromedia Flash Support, intitolata Loading data across domains, sono spiegati altri dettagli su questo metodo, e sono inclusi i file contenenti gli script server side per ColdFusion, PHP, ASP e Java Servlet.