2

[Flex3]Atomフィードを読み込むサンプル

Tag: Flex/AIR/Flashuechoco @ 00 : 00 : 00

Flex 2 / 3で、Atomフィードを読み込んで、ごにょごにょするための土台になるサンプル。他にも方法はあるけど、最初に覚えた方法なのでこう書きました。


<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application
xmlns:mx=”http://www.adobe.com/2006/mxml”
applicationComplete=”appInit();”>
<mx:Script><![CDATA[
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;
import mx.controls.Alert;

private const ATOM_URL:String = "http://rss.rssad.jp/rss/gihyo/feed/atom";
private namespace atom = "http://www.w3.org/2005/Atom";
use namespace atom;

private var entryArray:Array = new Array();
private var feed:XML;

private function appInit():void
{
var req:URLRequest = new URLRequest(ATOM_URL);
var ldr:URLLoader = new URLLoader();
ldr.addEventListener(IOErrorEvent.IO_ERROR, onAtomLoadIOError);
ldr.addEventListener(Event.COMPLETE, onAtomLoadComplete);
ldr.load(req);
}
private function onAtomLoadIOError(event:IOErrorEvent):void
{
Alert.show("failed to open url:"+ATOM_URL);
}

private function onAtomLoadComplete(event:Event):void
{
//Alert.show("successed to open url:"+ATOM_URL);
var ldr:URLLoader = URLLoader(event.target);
feed = XML(ldr.data);
var n:int = feed.entry.length();
for (var i:int = 0; i < n; i++ ) {
entryArray.push(String(feed.entry[i].title));
}
lstMain.dataProvider = entryArray;
}
]]></mx:Script>
<mx:List id=”lstMain” width=”100%” height=”100%” />
</mx:Application>

■追記(2008/02/26 16:20)

いそっちノートの中の人に言われて思い出したんですが、Flashにはクロスドメイン制約というものがあります。具体的に言うと原則的に同一のドメイン内のURL(画像やRSS、Atomなど)にしかアクセスできないという制約です。あくまで原則的にです。このswfファイルをローカルで実行する分には関係ないのですが、ブラウザで実行しようとすると、たぶん読み込めないです。なので、クロスドメインポリシーによってアクセスが許可されているAtomに適宜変更するか、あるいはあくまでサンプルだと思ってください。もちろん、このソースコードに重大なミスがあるわけではありません(笑

参考

Atomをパースするなら - Flex Coder

Leave a Reply