L'approccio E4X all'elaborazione XMLFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive 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 comprende una classe XML diversa. In ActionScript 3.0 questa classe è stata ridenominata XMLDocument, allo scopo di non creare un conflitto con la classe XML di ActionScript 2.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. Per ulteriori informazioni sulle classi XML ActionScript 2.0 precedenti, vedete il pacchetto flash.xml in ActionScript 3.0 Reference for the Adobe Flash Platform (Guida di riferimento di Adobe ActionScript 3.0 per la piattaforma Adobe Flash).
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, tuttavia, 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 Utilizzate 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);
Utilizzate 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"; Utilizzate 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));
|
|