範例:從網際網路載入 RSS 資料

RSSViewer 樣本應用程式示範在 ActionScript 中使用 XML 的多項功能,其中包括:

RSS 格式已經廣泛用於透過 XML 提供新資訊。簡單的 RSS 資料檔看起來如下:

<?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 應用程式會從網際網路讀取 RSS 資料,並剖析此資料以找出其中的標題、連結及說明,然後再傳回這些資料。SimpleRSSUI 類別可提供 UI 並呼叫 SimpleRSS 類別,如此便會執行所有的 XML 處理作業。

若要取得此樣本的應用程式檔案,請參閱 www.adobe.com/go/learn_programmingAS3samples_flash_tw。您可以在 Samples/RSSViewer 檔案夾中找到 RSSViewer 應用程式檔案,它是由下列檔案組成:

檔案

說明

RSSViewer.mxml

RSSViewer.fla

Flash (FLA) 或 Flex (MXML) 中的主應用程式檔案。

com/example/programmingas3/rssViewer/RSSParser.as

類別,其中包含使用 E4X 來移動 RSS (XML) 資料,並產生對應之 HTML 呈現格式的方法。

RSSData/ak.rss

樣本 RSS 檔案。這個應用程式是設定用來從網路 (Adobe 所提供的 Flex RSS Feed) 讀取 RSS 資料。然而,您可以輕鬆地將應用程式變更為從這份文件讀取 RSS 資料,它所使用的結構描述與 Flex RSS Feed 的結構描述不同。

副主題

讀取並剖析 XML 資料
組合 XMLList 資料
摘取 RSS Feed 的標題及傳送自訂的事件

讀取並剖析 XML 資料

RSSParser 類別包含 xmlLoaded() 方法,可將輸入 RSS 資料 (儲存在 rssXML 變數中) 轉換為包含 HTML 格式之輸出內容的字串 rssOutput

如果來源 RSS 資料包含預設的命名空間,則在開始執行此方法之前,程式碼會設定此預設的 XML 命名空間:

if (rssXML.namespace("") != undefined)
{
    default xml namespace = rssXML.namespace("");
}

然後,下一行會重複執行來源 XML 資料的內容,以檢查每一個名為 item 的後代屬性:

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

前三行只會設定字串變數,以代表 XML 資料之 item 屬性的 title、description 及 link 屬性。第四行便會呼叫 buildItemHTML() 方法,使用這三個新的字串變數做為參數,以取得格式為 XMLList 物件的 HTML 資料。

組合 XMLList 資料

HTML 資料 (XMLList 物件) 的格式如下:

<b>itemTitle</b>
<p>
    itemDescription
    <br />
    <a href="link">
        <font color="#008000">More...</font>
    </a>
</p>

方法的第一行會清除預設的 xml 命名空間:

default xml namespace = new Namespace();

default xml namespace 指令的範圍為函數區塊層級,這也就表示,此宣告的範圍是 buildItemHTML() 方法。

下列程式碼會根據傳遞給此函數的字串引數來組合 XMLList:

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;

這個 XMLList 物件代表適用於 ActionScript HTML 文字欄位的字串資料。

xmlLoaded() 方法會使用 buildItemHTML() 方法的傳回值,並將此值轉換為字串:

XML.prettyPrinting = false;
rssOutput = outXML.toXMLString();    

摘取 RSS Feed 的標題及傳送自訂的事件

xmlLoaded() 方法會根據來源 RSS XML 資料中的資訊,設定 rssTitle 字串變數:

rssTitle = rssXML.channel.title.toString();

最後,xmlLoaded() 方法會產生事件,通知該應用程式此資料已經剖析,並且可供使用:

            dataWritten = new Event("dataWritten", true);

Flash CS3

 

有新的意見加入至這個頁面時,傳送電子郵件給我 | 意見報告

目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000133.html