Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Elaborare con Flash i dati contenuti in un documento XML

Una volta ricevuti i dati è necessario elaborarli.
Una volta ricevuti i dati è necessario elaborarli.
Link copiato negli appunti

In questo capitolo affrontiamo l'elaborazione dei dati contenuti all'interno di un documento XML. Flash Action Script possiede una serie di metodi, proprietà e oggetti per manipolare documenti XML. Tuttavia quelli che verranno trattati su questa guida saranno solo quelli indispensabili per creare le nostre applicazioni e che a mio avviso sono quelli più importanti.

Ad esempio ci sono una serie di metodi che sono dedicati alla creazione di nodi in un documento XML. Questi metodi a mio avviso non sono molto utili perché Flash in quanto applicazione lato client, non mi sembra uno strumento adatto per creare ed inviare al server documenti XML anche perché in ogni caso deve esserci uno script lato server che riceve questi dati per memorizzarli su un data base. Non è neanche un'operazione molto sensata. Infatti in un documento XML che contiene una serie di dati strutturati e formattati con dei TAG l'informazione si trova appesantita dai TAG stessi che servono per strutturare i dati. Lo script lato server inoltre dovrebbe rielaborare il documento XML per estrapolarne solo le informazioni reali.

Un esempio classico potrebbe essere un form di inserimento dati dove si inserisce nome, cognome, età, città e nazione. Creiamo un XML con questi dati che potrebbe essere:

<persona>
    <nome>Enrico</nome>
    <cognome>Lai</cognome>
    <eta>27</eta>
    <citta>Selargius</citta>
    <nazione>Italia</nazione>
</persona>

Copiate questo codice su un file di testo e salvatelo sul vostro disco. Il file pesa 154 byte. Adesso togliete tutti i TAG e lasciate solo il contenuto dei TAG stessi (ovvero l'informazione reale). Salvate il file. Adesso pesa solo 34 byte!!!

Come potete notare l'informazione reale è molto meno della metà del contenuto del documento XML!!! Senza contare che inviare un documento XML di questo tipo al server vuol dire creare un script che prima di tutto filtri il documento per ottenere solo i dati reali! Tutto questo non ha molto senso e crea solo un grosso spreco di risorse! Basta utilizzare un semplice Form che invia tramite POST le informazioni ad uno script che prende direttamente il contenuto delle variabili e le memorizza su un Data Base.

Se quindi vi state chiedendo se potete utilizzare Flash per creare e salvare documenti XML la risposta è molto semplice: non ha senso! A meno che non siate masochisti. :)

Quando invece si tratta di caricare su Flash dei dati complessi allora si che ha senso utilizzare l'XML! Anche se le informazioni risultano appesantite dai TAG XML, in questo caso è indispensabile per dare una struttura più o meno complessa a dei dati. Utilizzando Flash si ha poi il vantaggio che ogni caricamento di Dati sarà solo ed esclusivamente relativo al documento XML in quanto il filmato Flash viene caricato una sola volta (a questo proposito vi invito a leggere questo articolo: http://www.macromedia.com/it/devnet/mx/articles/flash_databases/
).

Proviamo quindi a fare qualche operazione su un documento XML. 

Utilizziamo sempre il codice che abbiamo scritto prima apportando delle piccole modifiche per capire meglio i vari passaggi. Sostanzialmente le modifiche che apportiamo al codice Action Script riguardano il corpo della funzione ElaboraXML.

Codice Action Script (es2.fla)

filexml = "orari.xml";

ApriXML();
          function ApriXML () {
 mioxml = new XML();
 myarray = new Array();
 mioxml.load(filexml);
 mioxml.onLoad = ElaboraXML;
         function ElaboraXML (success) {
          if (mioxml.loaded) {
   myarray = mioxml.childNodes;

     trace ("Tot elementi = " + myarray.length);

      for (i=0;i<=myarray.length;i++){

    trace("elemento ["+i+"] ------------------")
    trace(myarray[i])
                                               
}
  };
 };
};

Copiamo il codice sopra riportato e salviamo il filmato  nella stessa directory dove abbiamo il file orari.xml e mandiamo in esecuzione il filmato da Flash con Ctrl+Enter. Osserviamo cosa appare nella finestra di Output di Flash:

elemento [0] ------------------

elemento [1] ------------------

elemento [2] ------------------
<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>
elemento [3] ------------------

elemento [4] ------------------

Tot elementi = 4

Cerchiamo di capire cos'è accaduto analizzando il codice Action Script. 

In particolare la riga myarray = mioxml.childNodes; ci permette di mettere in un array i nodi secondari dell'oggetto XML che si chiama mioxml. Osservando l'Output creato attraverso il ciclo for vediamo che nell'array ci sono 4 elementi di cui solo il terzo elemento ( elemento 2 ) non è un elemento vuoto ma contiene il documento XML senza però l'intestazione. Inoltre ogni elemento dell'array è a sua volta un documento XML. Un'altra considerazione che possiamo fare osservando l'output è che gli elementi vuoti hanno comunque una dimensione diversa. Questo perché anche gli spazi vuoti ( tabulazione ) dell'XML vengono presi in considerazione e considerati come elementi del documento XML. Con la versione MX di Flash e il player 6 è stata aggiunta la proprietà ignoreWhite che permette di ignorare i nodi di testo che contengono solo spazi bianchi. L'uso però di questa funzione non ci permetterebbe di mantenere la compatibilità con il player 5 per cui non verrà utilizzata nel nostro codice Action Script.

Ti consigliamo anche