L'approccio di E4X all'elaborazione XML

La specifica ECMAScript for XML definisce una serie di classi e funzionalità per l'elaborazione dei dati XML. Tali classi e funzionalità sono definite globalmente E4X. ActionScript 3.0 comprende le seguenti classi E4X: XML, XMLList, QName e Namespace.

I metodi, le proprietà e gli operatori delle classi E4X sono stati progettati con gli obiettivi seguenti:

NOTA

 

ActionScript 2.0 prevedeva una classe XML che in ActionScript 3.0 è stata ridenominata XMLDocument, allo scopo di non creare un conflitto con la classe XML di ActionScript 3.0 che fa parte di E4X. In ActionScript 3.0, le classi precedenti - XMLDocument, XMLNode, XMLParser e XMLTag - sono state inserite nel pacchetto flash.xml per assicurare il supporto retroattivo. Le nuove classi E4X sono classi principali che per essere utilizzate non richiedono l'importazione di un pacchetto. Il presente capitolo non approfondisce le classi XML usate da ActionScript 2.0. Per maggiori dettagli a questo riguardo, consultare il pacchetto flash.xml nella Guida di riferimento al linguaggio e ai componenti di ActionScript 3.0.

Ecco un esempio di manipolazione di dati con E4X:

var myXML:XML = 
    <order>
        <item id='1'>
            <menuName>burger</menuName>
            <price>3.95</price>
        </item>
        <item id='2'>
            <menuName>fries</menuName>
            <price>1.45</price>
        </item>
    </order>

Nonostante accada spesso che le applicazioni carichino i dati XML da un'origine esterna, come il servizio Web o un feed RSS, per motivi di chiarezza gli esempi presentati in questo capitolo assegnano valori letterali ai dati XML.

Come illustra la porzione di codice seguente, E4X comprende alcuni operatori intuitivi, come il punto (.) e l'identificatore di attributi (@) che vengono usati per accedere alle proprietà e agli attributi XML:

trace(myXML.item[0].menuName); // Output: burger
trace(myXML.item.(@id==2).menuName); // Output: fries
trace(myXML.item.(menuName=="burger").price); // Output: 3.95

Usare il metodo appendChild() per assegnare un nuovo nodo secondario al codice XML, come illustrato nello snippet di codice seguente:

var newItem:XML = 
    <item id="3">
        <menuName>medium cola</menuName>
        <price>1.25</price>
    </item>

myXML.appendChild(newItem);

Usare gli operatori @ e . non solo per leggere i dati, ma anche per assegnarli, come illustrato di seguito:

myXML.item[0].menuName="regular burger";
myXML.item[1].menuName="small fries";
myXML.item[2].menuName="medium cola";

myXML.item.(menuName=="regular burger").@quantity = "2";
myXML.item.(menuName=="small fries").@quantity = "2";
myXML.item.(menuName=="medium cola").@quantity = "2";

Usare un ciclo for per eseguire un'iterazione sui nodi XML, come illustrato di seguito:

var total:Number = 0;
for each (var property:XML in myXML.item)
{
    var q:int = Number(property.@quantity);
    var p:Number = Number(property.price);
    var itemTotal:Number = q * p;
    total += itemTotal;
    trace(q + " " + property.menuName + " $" + itemTotal.toFixed(2))
}
trace("Total: $", total.toFixed(2));

Flash CS3

 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000124.html