E4X-Ansatz der XML-Verarbeitung

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Die ECMAScript for XML-Spezifikation definiert eine Reihe von Klassen und Funktionen für die Verarbeitung von XML-Daten. Diese tragen in ihrer Gesamtheit die Bezeichnung E4X. ActionScript 3.0 enthält die folgenden E4X-Klassen: XML, XMLList, QName und Namespace.

Die Methoden, Eigenschaften und Operatoren der E4X-Klassen wurden mit der folgenden Zielstellung entwickelt:

  • Einfachheit – Soweit möglich, erleichtert E4X das Programmieren und Verstehen von Code für die Verwendung von XML-Daten.

  • Konsistenz – Die Methoden und die Logik hinter E4X sind sowohl in sich konsistent als auch konsistent mit anderen Teilen von ActionScript.

  • Vertrautheit – Auf XML-Daten wird mit bekannten Operatoren wie dem Punktoperator ( . ) zugegriffen.

Hinweis: In ActionScript 2.0 gibt es eine andere XML-Klasse. Diese wurde in ActionScript 3.0 in „XMLDocument“ umbenannt, damit sie nicht mit der XML-Klasse von ActionScript 3.0 kollidiert, die Bestandteil von E4X ist. Hauptsächlich zur Unterstützung älterer Anwendungen enthält ActionScript 3.0 im flash.xml-Paket die veralteten Klassen XMLDocument, XMLNode, XMLParser und XMLTag. Die neuen E4X-Klassen sind Kernklassen. Für ihre Verwendung muss kein Paket importiert werden. Einzelheiten zu den älteren ActionScript 2.0 XML-Klassen finden Sie im Eintrag zum flash.xml-Paket im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform .

Es folgt ein Beispiel zum Bearbeiten von Daten mit 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>

Häufig werden in einer Anwendung XML-Daten aus einer externen Quelle geladen, z. B. aus einem Webservice oder einem RSS-Feed. Aus Gründen der Übersichtlichkeit weisen die hier aufgeführten Codebeispiele XML-Daten jedoch als Literale zu.

Wie im folgenden Codebeispiel dargestellt ist, enthält E4X einige intuitive Operatoren wie den Punktoperator ( . ) oder den Attributbezeichneroperator ( @ ) für den Zugriff auf Eigenschaften und Attribute in 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

Mithilfe der appendChild() -Methode können Sie den XML-Daten einen neuen untergeordneten Knoten zuweisen, wie im folgenden Codeausschnitt dargestellt:

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

Verwenden Sie die Operatoren @ und . nicht nur zum Lesen von Daten, sondern auch zum Zuweisen von Daten, wie im Folgenden dargestellt:

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

Verwenden Sie wie folgt eine for -Schleife, um die XML-Knoten zu durchlaufen:

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