2 月
[Flex3]Atomフィードを読み込むサンプル
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に適宜変更するか、あるいはあくまでサンプルだと思ってください。もちろん、このソースコードに重大なミスがあるわけではありません(笑
参考
