XML işlemeye yönelik E4X yaklaşımı

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

XML için ECMAScript belirtimi, XML verileriyle çalışılmasına yönelik sınıflar ve işlevlerin bir kümesini tanımlar. Bu sınıflar ve işlevler topluca E4X olarak bilinir. ActionScript 3.0, şu E4X sınıflarını içerir: XML, XMLList, QName ve Namespace.

E4X sınıflarının yöntemleri, özellikleri ve operatörleri, şu hedefler göz önünde bulundurularak tasarlanmıştır:

  • Basitlik—E4X, XML verileriyle çalışılmasına yönelik kodların yazılmasını ve anlaşılmasını olabildiğince kolaylaştırır.

  • Tutarlılık—E4X'in ardındaki mantık ve yöntemler, ActionScript'in diğer bölümlerindekilerle dahili olarak tutarlılık gösterir.

  • Bilindik Olması—XML verilerini, nokta (.) operatörü gibi bilindik operatörlerle işlersiniz.

Not: ActionScript 2.0'da farklı bir XML sınıfı vardı. ActionScript 3.0'da bu sınıf, E4X'in bir parçası olan ActionScript 3.0 XML sınıfı ile çakışmaması için XMLDocument olarak yeniden adlandırılmıştır. ActionScript 3.0'da, XMLDocument, XMLNode, XMLParser ve XMLTag gibi eski sınıflar, eski sürümlerin desteklenmesi için flash.xml paketine dahil edilmiştir. Yeni E4X sınıfları çekirdek sınıflardır; bunları kullanmak için bir paketi içe aktarmanız gerekmez. ActionScript 2.0 XML sınıflarıyla ilgili ayrıntılı bilgi için Adobe Flash Platformu için ActionScript 3.0 Başvurusu'ndaki flash.xml paketine bakın.

Aşağıda, E4X ile veri işlenmesine örnek verilmiştir:

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>

Genellikle uygulamanız bir web hizmeti veya RSS beslemesi gibi harici bir kaynaktan XML verilerini yükler. Ancak, daha belirgin olmaları için, burada sağlanan kod örnekleri XML verisini değişmez değerler olarak atar.

Aşağıdaki kodda gösterildiği gibi, E4X, XML'deki özellik ve niteliklere erişilmesi için, nokta (.) ve nitelik tanımlayıcısı (@) operatörleri gibi bazı sezgisel operatörleri içerir:

trace(myXML.item[0].menuName); // Output: burger 
trace(myXML.item.(@id==2).menuName); // Output: fries 
trace(myXML.item.(menuName=="burger").price); // Output: 3.95

Aşağıdaki kod parçasında gösterildiği gibi, XML'e yeni bir alt düğüm atamak için appendChild() yöntemini kullanın:

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

Aşağıda gösterildiği gibi, verileri okumak ve atamak için @ ve . operatörlerini kullanı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";

Aşağıdaki gibi, XML düğümlerini yinelemek için bir for döngüsü kullanın:

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