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