サンプルをダウンロード(252KB)
注: Flashではドメイン間通信を禁止しているため,このサンプルではRSSの読み込み部分はPHPのスクリプトを使用しています.
このドキュメントをお読みになる前に, 「PHPを使用したRSSの取得方法」もご参照ください.
1. サーバからRSSを受信する
XMLHttpRequestを使用し,サーバからRSSを受信します.
この際,以下の形式で受信するようにします.
- channel要素を連想配列に取り出す
- item要素は1つの要素を独立して取り込み,その内容を連想配列で取り出す
- item要素の数を取得する
図にすると以下のようになります.
配列 |
channel |
title |
link |
description |
items |
count |
item |
title |
link |
description |
item(要素数繰り返し) |
2. 読み込んだRSSを表示する(PHP側)
配列の作成
(PHPでのRSSパース方法は「PHPを使用したRSSの取得方法」を参考にしてください)
channel要素を作成するスクリプトは以下のようになります.
// channel要素
print '{"channel": ';
print '{"title":"' . $channel['title'] . '", ' .
'"date": "' . $channel['date'] . '", '.
'"description": "' . $channel['description'] . '", ' .
'"link": "' . $channel['link'] . '"}';
作成される文字列:
{"channel":
{"title": "title要素の内容",
"date", "date要素の内容",
"description": "description要素の内容",
"link": "link要素の内容"
}
}
同様に item要素も展開し,items.countにitemの要素数を入れます.
3. 読み込んだRSSを表示する(Flash側)
2.で作成した文字列をLoadVars()のsendAndLoad()を使用して受け取ります.
受け取りの関数はonLoadではなく,onDataで受け取ります.
作成したJsonファイルをパースするのにJSON in ActionScriptというライブラリを使用します.このファイルはパブリッシュする際に.flaファイルと同じ階層でないとエラーになりますので注意してください.
注)パースしたデータの取得方法はJSON.asの仕様にしたがって取得してください.
// 送信用LoadVarsインスタンス
var send_lv:LoadVars = new LoadVars();
// 受信用LoadVarsインスタンス
var recv_lv:LoadVars = new LoadVars();
// 受信が完了した際に呼び出されるイベントハンドラメソッド
recv_lv.onData = function(success)
{
//ロードした後の処理
if (success)
{
var o:Object = JSON.parse(success);
trace("channel: " + o.channel.title);
//以下取得をテキストボックスに表示するサンプル 始まり
//channel要素
channeltitle.text = o.channel.title;
channellink.text = o.channel.link;
channeldescription.text = o.channel.description;
//items要素
itemscount.text = o.items.count;
//item[0]要素
item0title.text = o.item[0].title;
item0link.text = o.item[0].link;
item0description.text = o.item[0].description;
//以下取得をテキストボックスに表示するサンプル 終わり
}
else
{
trace("error");
}
};
// 送信パラメータを送信用LoadVarsインスタンスのプロパティの設定
send_lv.url = "http://search.goo.ne.jp/rss/newkw.rdf"
// 送信実行 phpファイルの場所に適宜変更してください.
send_lv.sendAndLoad("test.php", recv_lv, "POST");
以下,各データ取得の例
 channel要素
o.channel.title; // title要素
o.channel.link; // link要素
o.channel.description; //description要素
o.channel.count; //count要素
o.item[0].title; // title要素
o.item[0].link; // link要素
o.item[0].description; //description要素
注)o.itemで配列としてデータが取得できるので,取得したい希望の配列番号を指定して取得する.
o.item[0].titleの場合は配列の一番目のitem要素のタイトルを表示します.
o.item[1].titleの場合は配列の2番目のitem要素のタイトルを表示します.
|