sponsor adobe istanbul
Hatırlatma: MMIstanbul, hem tasarımcılar hem de programcılar içindir. MMIstanbul'u arkadaşlarınıza tavsiye edebilirsiniz.
Profili Göster

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 !

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

Profili Göster
Erdal Taşdemir 27/06/2008

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.

yeni üyelik | şifremi unuttum

aç-kapa 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

aç-kapa Sergi İstanbul'da Bir Sürrealist: Salvador Dali

İstanbul'da Bir Sürrealist: Salvador Dali

Picasso ve Rodin’den sonra kimi görmek istersiniz deseler; Salvador Dali listenin ilk başlarında yer almaz mı? Ressam, yazar, bilim adamı, tasar...
Kategori: Sergi

aç-kapa Yarışma İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

Türkiye’nin interaktif pazarlama projelerini değerlendiren ilk ve tek yarışması Grand Interactive Awards (GIA) için başvurular 15 Ağustos tarihi...
Kategori: Yarışma

aç-kapa Fuar CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT Bilişim Eurasia bu yıl 7 – 12 Ekim tarihlerinde düzenleniyor Adını dünyanın en büyük on fuarı arasına yazdırarak, İstanbul’u Avrasy...
Kategori: Fuar

aç-kapa Sempozyum Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008), yazılım mühendisliği alanında; kalite deneyimlerini, çözümlerini, yazılım...
Kategori: Sempozyum

üyeler Üyelerimizden...

MMIstanbul Adobe UG MMIstanbul Adobe UG

adobe user group

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.

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 305 (1 kayıtlı, 304 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul