El enfoque E4X del procesamiento de XML

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 de 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

 

En ActionScript 2.0 hay 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. En este capítulo no se describe en detalle el uso de las clases XML antiguas de ActionScript 2.0. Para más información sobre dichas clases, consulte el paquete flash.xml en Referencia del lenguaje y componentes ActionScript 3.0.

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, por claridad, los ejemplos de este capítulo asignan datos XML como literales.

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); // Salida: burger
trace(myXML.item.(@id==2).menuName); // Salida: fries
trace(myXML.item.(menuName=="burger").price); // Salida: 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));

Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000124.html