ActionScript'te XML örneği: internetten RSS verilerini yüklemeFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü RSSViewer örnek uygulaması, ActionScript'te XML ile çalışılmasının birçok özelliğini gösterir, örn:
RSS biçimi, XML yoluyla haberleri yayınlamak için yaygın olarak kullanılır. Basit bir RSS veri dosyası şöyle görünebilir: <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>Alaska - Weather</title> <link>http://www.nws.noaa.gov/alerts/ak.html</link> <description>Alaska - Watches, Warnings and Advisories</description> <item> <title> Short Term Forecast - Taiya Inlet, Klondike Highway (Alaska) </title> <link> http://www.nws.noaa.gov/alerts/ak.html#A18.AJKNK.1900 </link> <description> Short Term Forecast Issued At: 2005-04-11T19:00:00 Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office Homepage: http://pajk.arh.noaa.gov </description> </item> <item> <title> Short Term Forecast - Haines Borough (Alaska) </title> <link> http://www.nws.noaa.gov/alerts/ak.html#AKZ019.AJKNOWAJK.190000 </link> <description> Short Term Forecast Issued At: 2005-04-11T19:00:00 Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office Homepage: http://pajk.arh.noaa.gov </description> </item> </channel> </rss> SimpleRSS uygulaması, Internet'ten RSS verilerini okur, başlık, bağlantı ve açıklamalar için verileri ayrıştırır ve bu verileri döndürür. SimpleRSSUI sınıfı kullanıcı arabirimini sağlar ve tüm XML işlemeyi gerçekleştiren SimpleRSS sınıfını çağırır. Bu örneğin uygulama dosyalarını edinmek için bkz. www.adobe.com/go/learn_programmingAS3samples_flash_tr. RSSViewer uygulama dosyalarını Samples/RSSViewer klasöründe bulabilirsiniz. Uygulama aşağıdaki dosyaları içerir:
XML verilerini okuma ve ayrıştırmaRSSParser sınıfı, rssXML değişkeninde saklanan girdi RSS verilerini HTML olarak biçimlendirilmiş çıktı (rssOutput) içeren bir dizeye dönüştüren xmlLoaded() yöntemini içerir. Kaynak RSS verileri varsayılan bir ad alanı içeriyorsa, kod, yöntemin başına yakın konumda varsayılan XML ad alanını ayarlar: if (rssXML.namespace("") != undefined) { default xml namespace = rssXML.namespace(""); } Sonraki satırlar, kaynak XML verisinin içerikleri üzerinde döngü gerçekleştirerek item adındaki alt öğe özelliklerinin her birini inceler: for each (var item:XML in rssXML..item) { var itemTitle:String = item.title.toString(); var itemDescription:String = item.description.toString(); var itemLink:String = item.link.toString(); outXML += buildItemHTML(itemTitle, itemDescription, itemLink); } İlk üç satır, dize değişkenlerini, XML verisinin item özelliğinin başlık, açıklama ve bağlantı özelliklerini temsil edecek şekilde ayarlar. Sonraki satır, parametre olarak üç yeni dize değişkeni kullanarak, HTML verilerini bir XMLList nesnesi biçiminde almak için buildItemHTML() yöntemini çağırır. XMLList verilerini birleştirmeHTML verileri (bir XMLList nesnesi) şu biçimde olabilir: <b>itemTitle</b> <p> itemDescription <br /> <a href="link"> <font color="#008000">More...</font> </a> </p> Yöntemin birinci satırları, varsayılan xml ad alanını temizler: default xml namespace = new Namespace(); default xml namespace direktifi, blok düzeyinde kapsam işlevine sahiptir. Başka bir deyişle, bu bildirimin kapsamı buildItemHTML() yöntemidir. Bunu izleyen satırlar, işleve iletilen dize argümanlarını esas alarak XMLList öğesini oluşturur: var body:XMLList = new XMLList(); body += new XML("<b>" + itemTitle + "</b>"); var p:XML = new XML("<p>" + itemDescription + "</p>"); var link:XML = <a></a>; link.@href = itemLink; // <link href="itemLinkString"></link> link.font.@color = "#008000"; // <font color="#008000"></font></a> // 0x008000 = green link.font = "More..."; p.appendChild(<br/>); p.appendChild(link); body += p; Bu XMLList nesnesi, ActionScript HTML metin alanı için uygun olan dize verisini temsil eder. xmlLoaded() yöntemi, buildItemHTML() yönteminin döndürme değerini kullanır ve bunu bir dizeye dönüştürür: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); RSS beslemesinin başlığını ayıklama ve özel bir olay göndermexmlLoaded() yöntemi, kaynak RSS XML verisindeki bilgileri esas alarak bir rssTitle dize değişkeni ayarlar: rssTitle = rssXML.channel.title.toString(); Son olarak, xmlLoaded() yöntemi, verilerin ayrıştırıldığını ve kullanılabilir olduğunu uygulamaya bildiren bir olay oluşturur: dataWritten = new Event("dataWritten", true); |
|