El enfoque E4X del procesamiento de XMLFlash Player 9 y posterior, Adobe AIR 1.0 y posterior La especificación de ECMAScript for XML define un conjunto de clases y funcionalidad para trabajar con datos XML. Este conjunto de clases y funcionalidades se denomina E4X. ActionScript 3.0 incluye las siguientes clases E4X: XML, XMLList, QName y Namespace. Los métodos, propiedades y operadores de las clases de E4X se han diseñado con los siguientes objetivos:
Nota: ActionScript 2.0 tenía una clase XML. En ActionScript 3.0 se ha cambiado su nombre a XMLDocument para que no entre en conflicto con la clase XML de ActionScript 3.0 que forma parte de E4X. Las clases antiguas (XMLDocument, XMLNode, XMLParser y XMLTag) se incluyen en el paquete flash.xml principalmente por compatibilidad con código antiguo. Las nuevas clases de E4X son clases principales; no es necesario importar un paquete para utilizarlas. Para obtener información sobre las clases XML heredadas de ActionScript 2.0, consulte el paquete flash.xml en ActionScript 3.0 Reference for the Adobe Flash Platform.
A continuación se muestra un ejemplo de manipulación de datos 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>
A menudo, la aplicación cargará datos XML desde un origen externo, como un servicio web o un canal RSS. No obstante, para mayor claridad, los ejemplos de código proporcionados asignan datos XML como literales. Tal y como se muestra en el código siguiente, E4X incluye algunos operadores intuitivos, como el operador punto (.) y el operador de identificador de atributo (@), para acceder a propiedades y atributos en datos 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 El método appendChild() se utiliza para asignar un nuevo nodo secundario a los datos XML, como se indica en el siguiente fragmento de código: var newItem:XML =
<item id="3">
<menuName>medium cola</menuName>
<price>1.25</price>
</item>
myXML.appendChild(newItem);
Los operadores @ y . se utilizan no sólo para leer datos, sino también para asignar datos, como se indica a continuación: 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"; Se puede utilizar un bucle for para recorrer nodos de los datos XML, de la manera siguiente: 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));
|
|