Actionscript 3 XML Sınıfı (E4X) Kullanımı
Engin Yöyen Tarih: 3/12/2007 Yorum: 1 adet
Okunma : 435 Tutanlar: Bu yazıyı 0 kişi tuttu.
Actionscript 3 içerisinde XML kütüphanesi köklü değişiklikler oldu. Şu anda ECMAScript for XML (E4X) denen bir sistem kullanıyor, ve kullanımı Actionscript 2 ye göre daha da kolaylaştırıldı. Validating Parser ile xml dosyalarınızın hatalı olup olmadığını kontrol ediyor, yani tagların düzgün kapatılıp kapatılmadığını, dügümlerin eksik mi yada yanlış yerlerde olup olmadığını kontrol ediyor. Bu özellik ile aslında büyük bir yükün altından kalkıyoruz.
Şimdi Xml in Actionscript 3 ile Flash ın içerisinde temel olarak nasıl kullanıldığını ve XML sınıfını kısaca anlatmaya çalışacağım.
Bu yazıda kullanacağımız örnek xml sayfası;
<xml>
<list>
<title>XML Test</title>
<link>http://www.stayupdatedonweb.com</link>
<item>
<book>Şehir Mektupları</book>
<author> Ahmet Rasim </author>
</item>
<item>
<book>Sınırlar Arasında</book>
<author>Banu Avar</author>
</item>
<item>
<book>Yedek Parça</book>
<author>Aziz Nesin"</author>
</item>
</list>
İlk olarak bir xml dökümanını Flashın içerisine nasıl yüklenebileceğini anlatacağım . Flashın dışında bulunan bir xml flasha yüklemek için [quote]URLLoader[/code] sınıfı kullanılıyor.
//Kullandığımız Türkçe karakterlerin doğru olarak görüntülenmesi için
//useCodePage özelliğini kullanıyoruz.
System.useCodePage = true;
//İlk olarak yeni bir xml tanımlıyoruz.
var myXML:XML = new XML();
//URLRequest
var myXMLURL:URLRequest = new URLRequest('test.xml');
//URLLoader
var myLoader:URLLoader = new URLLoader(myXMLURL);
//EventLİsterner ekliyoruz
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
//Yüklendiğinde çalışacak olan Fonksiyon
function xmlLoaded(event:Event):void {
//myLoader daki bilgiyi alip xml le yüklüyor
myXML = XML(myLoader.data);
//XML yüklenen bilginin tamamının trace metodu ile çıktısını alıyoruz
trace(myXML);//Tamamı
}
XML i başarılı bir şekilde yüklediğimize göre xml i ayrıştırmaya geçebiliriz. Aşağıda vereceğim kodları xmlLoaded fonksiyonu içerisinde trace ederek sonuça ulaşabilirsiniz. XML de bir ilk düğümün altında duran bir tagın içindeki bilgiyi almak için tek yapmanız gereken belirttiğiniz xml objesi ve tagın adını yazmak.
trace(myXML.title) // XML Test
trace(myXML.link) // http://www.stayupdatedonweb.com
Buradaki sıra tamamen önemli değil yani eğer ilk düğümdeki title tagı xml’in sonunda da olsa başında da olsa aynı yöntemle ulaşabilirsiniz.
Peki eğer bir tag birden fazla sefer mevcutsa. Mesela kullandığımız örnek xml de 3 tane item tagı var, bu tagları almak için aynı metodu kullanacağız, ama bu bize tüm item taglarını verecektir. Belli bir tagı almak için ise item tagından sonra sıra numarası belirtmemiz gerekecek. Sıra numaraları tabii sıfır(0) dan başlayacaktır.
trace(myXML.item)
trace(myXML.item[0])
İstediğimiz Item tagını aldık, sırada ise item tagının içindeki book ve author taglarına ulaşmak. Bunun için ise item tagından sonra çağırmak istediğimiz tagı çağıracagız.
trace(myXML.item[0].book) //Şehir Mektupları
trace(myXML.item[0].author) //Ahmet Rasim
Şu ana kadar çektiğimiz tüm bilgiler taglar arasındaki bilgilerdi, peki herhangi bir "attribute" (öznitelik diye geçiyor sözlükte) nasıl çağırabiliz. Oda çok basit tabiki. Item tagından sonra "@" işareti koyarak attribute adını yazmamız yeterli. Item tagının attribute almak için;
trace(myXML.item[0].@id) // 001
Attribute lerin tamamına ulaşmak isterseniz yapmanız gereken "@" işaretinden sonra "*" işareti koymaktır. Bu size belirttiğiniz düğümdeki tüm attributeleri verecektir.
trace(myXML.item.@*)
Ayrıca xml den bilgi alırken bu bilgileri filtreleyebiliyoruz. Mesela ismini bildiğiniz bir yazarın kitabını aratmak gibi. Bunun için ise tabii eşleştireceğiniz daha doğrusu filtreleyeğiniz bilginin bilinmesi gerekiyor. Düğümün tamamına ulaşmak için kullanacağınız metod;
myXML.item.(author == 'Banu Avar');
Sadece kitap ismini istiyorsak eğer book tagını kodun sonuna ekleyerek ulaşabiliriz.
myXML.item.(author == 'Banu Avar').book; //Sınırlar Arasında
Aynı yöntemle item id numarasınada ulaşabiliriz.Tabii "id numarası" attribute olduğundan dolayı @ işareti kullanmanız gerekiyor.
trace(myXML.item.(author == 'Banu Avar').@id) //002
Filtreleme yöntemi için ihtiyaç duyduğunuz bilgi çeşidi ve xml inize göre düzenleyebilirsiniz. Ben sadece iki örenek daha verip filtreleme kısmını geçeceğim.
myXML.item.(@id == 001); // ikinci düğümün tamamını size verecektir.
myXML.item.(@id > 002); //iki den küçük olan tüm id lerin düğümünü size verecektir.
Sırada ise length özelliği var ".length()" ile xml in içindeki belli bir düğümünün sayısına yada element sayısına ulaşabilirsiniz.Aşağıdaki kod ile item düğümünün toplam saysını ulaşabilirsiniz. Kod:
trace(myXML.item.length()); //item uzunluğu
Şimdiye kadar yukarıda vurguladım metodlar ve teknikler xml ayrıştırmanıza yardımcı olacak derecedir. Tabii bunların yanısıra farklı kod kombinasyonları kullanılabilir. Mesela;
trace(myXML.item.length()); //item uzunluğu
trace(myXML.child('item').length()); // item uzunluğu
trace(myXML.item); //item tamamı
trace(myXML.child('item'));//item tamamı
yukarıdaki kodlar tamamen aynı sonucu döndürecektir,tabiki kullanım tercihiniz tamamen size aittir. Kısacası actionscript 3 xml çözümleme yönünden eskisine göre şu anda daha güçlü ve kolay bir yapıya sahip. Kaynak Kodları buradan indirebilirsiniz
http://enginyoyen.com/blog/tr/wp-content/uploads/2007/11/actionscirpt3xml.rar
Kolay Gelsin Engin Yöyen !
Makale
Ders
Etkinlikler
Konferans
2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08
2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08
2.Ulusal Yazılım Mimarisi Konferansı (UYMK’08), 11 – 12 Eylül 2008 tarihlerinde Ege Üniversitesi Bilgisayar Mühendisliği Bölümü ev sah...
Kategori:
Konferans
MMIstanbul Adobe UG
ColdFusion, Flex, AIR, Flash , PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Connect, Premiere, Soundbooth, Contribute, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 305 (1 kayıtlı, 304 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
500 Hatası Hakkında!
merhaba arkadaşlar, bir önceki yazıda bahsettiğimiz üzere sunucunun ram ihtiyacını yavaş yavaş gidermeye başladık. An itibariyle 2 Giga d ...
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız
MMIstanbul Online Seminerlerine Nasıl Katılabilirim?




Teşekkürler Engin. Gördüğüm kadarı ile Actionscript 3.0 da bir framework kullanımına gerek kalmadan, rahatlıkla xml dökümanı ayrıştırılabiliyor. Çok güzel ve kolay kullanımı var.