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