ActionScript'te XML örneği: internetten RSS verilerini yükleme

Flash 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:

  • XML verilerinde RSS beslemesi biçiminde geçiş yapmak için XML yöntemlerini kullanma.

  • XML verilerini bir metin alanında kullanmak üzere HTML biçiminde birleştirmek için XML yöntemlerini kullanma.

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:

File

Açıklama

RSSViewer.mxml

veya

RSSViewer.fla

Flash (FLA) veya Flex (MXML) içindeki ana uygulama dosyası.

com/example/programmingas3/rssViewer/RSSParser.as

RSS (XML) verilerinde geçiş yapmak ve karşılık gelen HTML temsilini oluşturmak için E4X kullanan yöntemleri içeren bir sınıf.

RSSData/ak.rss

Örnek bir RSS dosyası. Bu uygulama, web'deki RSS verileri, Adobe tarafından barındırılan bir Flex RSS beslemesinde okunacak şekilde ayarlanmıştır. Ancak uygulamayı, Flex RSS beslemesinden daha farklı bir şema kullanan bu belgedeki RSS verilerini okuyacak şekilde kolayca değiştirebilirsiniz.

XML verilerini okuma ve ayrıştırma

RSSParser 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ştirme

HTML 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önderme

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