.introduzione
Non ho intenzione di parlare diffusamente dell'XML e della sue funzioni, per le quali rimando alla guida di base presente su HTML.it, e al forum dedicato. In questa miniguida, vedremo invece come caricare in Flash un file XML, e come strutturare i dati al suo interno.
.struttura di un file xml
Innanzitutto, la convenienza dell'utilizzo dell'XML si trova quando si ha la necessità di caricare dati la cui struttura sia complessa e articolata: se infatti dobbiamo caricare semplicemente una variabile, o una sequenza di variabili, la Classe LoadVars
e un file di testo sono più che sufficienti.
La Classe XML rappresenta la giusta scelta, al contrario, quando i dati sono legati tra di loro secondo una struttura ben precisa, spesso ripetuta, come quella di un albero.
Ad esempio:
- caricamento di una lunga variabile contenente un testo >> file di testo e Classe LoadVars
- caricamento di una serie di variabili diverse e non collegate >> file di testo e Classe LoadVars
- caricamento di una serie di variabili diverse ma collegate >> file xml e Classe XML
- caricamento di una struttura complessa e ripetuta >> file xml e Classe XML
Partiamo quindi dall'analisi di un singolo nodo, per risalire fino alla costruzione di una struttura più articolata.
.il singolo nodo
Un nodo XML, del tutto simile ad un elemento HTML, viene rappresentato da un tag di apertura e da uno di chiusura, con lo stesso nome ma preceduto da uno slash:
All'interno dei due tag viene inserito il contenuto del nodo:
Dentro il solo tag di apertura, possono essere inseriti degli attributi, cioè delle informazioni aggiuntive al contenuto stesso:
Nell'utilizzo abbinato a Flash, è spesso preferibile utilizzare solo gli attributi e nessun contenuto, dal momento che la lettura dei primi è molto più veloce che quella del secondo. In questo caso, non esisterà il tag di chiusura, ma sarà sufficiente inserire lo slash alla fine di quello di apertura.
.nodi figli
Il contenuto di un nodo non deve essere necessariamente un sequenza di caratteri: può essere, a sua volta, un altro nodo
o anche una sequenza di nodi:
Da notare:
• nell'esempio, i nodi figlio hanno tutti lo stesso nome: questa sintassi è perfettamente legale, così come lo è il dare un nome diverso a ciascuno di essi.
.proprietà del nodo
Quando avremo caricato un file XML dentro il nostro filmato, potremo accedere ai nodi della struttura leggendone le proprietà, i cui nomi ne indicano chiaramente, anche se in Inglese, il significato.
Ad esempio, per il singolo nodo:
Proprietà del nodo
Da notare:
• tutti gli attributi di un nodo si trovano nella proprietà attributes
del nodo stesso: la proprietà attributes
è un array associativo, cioè un oggetto con le proprietà date dai nomi degli attributi, alle quali corrispondono i valori tra virgolette. In Flash avremo qualcosa del genere:
// traccia "valore" nella finestra dell'Output
trace(nodo.attributes.attributo1);
.relazione tra nodi
Le proprietà dei nodi in relazione ad altri nodi, invece, sono di questo tipo:
Struttura dei nodi
I nodi figlio possono essere indicati in vari modi:
• l'elenco di tutti i nodi figlio è un array, contenuto nella proprietà childNodes
. Per indicare il singolo nodo figlio, quindi, si fa riferimento all'array childNodes
con l'indice dell'elemento cercato. Ad esempio:
- primo nodo figlio:
nodo_genitore.childNodes[0]
- terzo nodo figlio:
nodo_genitore.childNodes[2]
- ultimo nodo figlio:
nodo_genitore.childNodes[nodo_genitore.childNodes.lenght - 1]
• il primo e l'ultimo dei nodi figlio sono indicati, oltre che con il sistema dell'array childNodes
, con due proprietà particolari:
- primo nodo figlio:
nodo_genitore.firstChild
- ultimo nodo figlio:
nodo_genitore.lastChild
• il nodo genitore è raggiungibile, partendo da uno qualsiasi dei nodi figlio, tramite la proprietà:
nodo_figlio.parentNode
• i nodi figlio dello stesso nodo sono relazionabili tramite due proprietà, che indicano il nodo precedente e il nodo seguente:
- nodo precedente:
nodo_figlio.previousSibling
- nodo seguente:
nodo_figlio.nextSibling