XML-Verarbeitung mit E4X

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

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

HINWEIS

 

In ActionScript 2.0 gab es eine 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. In diesem Kapitel wird nicht ausführlich auf die veralteten XML-Klassen von ActionScript 2.0 eingegangen. Entsprechende Informationen finden Sie im Text zum flash.xml-Paket im Komponenten-Referenzhandbuch für ActionScript 3.0.

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 besseren Verständlichkeit werden bei den Beispielen in diesem Kapitel die XML-Daten jedoch als Literale zugewiesen.

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

Flash CS3

 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000124.html