Approche E4X concernant le traitement XML

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

La spécification ECMAScript pour XML définit un ensemble de classes et de fonctionnalités permettant d’utiliser des données XML. Cet ensemble de classes et de fonctionnalités est connu sous le nom de E4X. ActionScript 3.0 intègre les classes E4X suivantes : XML, XMLList, QName et Namespace.

Les méthodes, propriétés et opérateurs des classes E4X sont conçus avec les objectifs suivants :

  • Simplicité : lorsque cela est possible, E4X facilite l’écriture et la compréhension du code à utiliser avec des données XML.

  • Cohérence : les méthodes et le raisonnement E4X sont cohérents avec eux-mêmes et avec d’autres parties d’ActionScript.

  • Connaissance : vous manipulez des données XML avec des opérateurs bien connus tels que l’opérateur point ( . ).

Remarque : ActionScript 2.0 intègre une autre classe XML. Dans ActionScript 3.0, cette classe a été renommée XMLDocument, pour éviter tout conflit de nom avec la classe XML d’ActionScript 3.0 qui fait partie d’E4X. Dans ActionScript 3.0, les classes héritées (XMLDocument, XMLNode, XMLParser et XMLTag) sont comprises dans le package flash.xml, pour la prise en charge du contenu hérité principalement. Les nouvelles classes E4X sont des classes de base. Vous ne devez pas importer de package pour les utiliser. Pour plus d’informations sur les classes XML d’ActionScript 2.0 existantes, voir le package flash.xml dans le manuel Guide de référence ActionScript 3.0 pour la plate-forme Adobe Flash .

Voici un exemple de manipulation de données avec 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>

Votre application charge souvent des données XML depuis une source externe telle qu’un service Web ou un flux RSS. Toutefois, par souci de clarté, les exemples de code ci-après affectent les données XML en tant que littéraux.

Comme l’indique le code suivant, E4X inclut des opérateurs intuitifs tels que les opérateurs point ( . ) et identifiant d’attribut ( @ ) pour accéder aux propriétés et aux attributs dans l’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

Utilisez la méthode appendChild() pour affecter un nouveau nœud enfant à l’XML, comme l’indique le code suivant :

var newItem:XML =  
    <item id="3"> 
        <menuName>medium cola</menuName> 
        <price>1.25</price> 
    </item> 
 
myXML.appendChild(newItem);

Utilisez les opérateurs @ et . non seulement pour lire des données mais également pour les affecter, comme dans l’exemple suivant :

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";

Utilisez une boucle for pour parcourir en boucle les nœuds de l’XML, comme suit :

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));