NORIのFlashユーザのためのMovable Type講座 gihyo.jp版

第4回 Flash側:XML解析をAS3.0で

この記事を読むのに必要な時間:およそ 3 分

繰り返しノードの抽出

今回のXMLフォーマットでは,entriesタグの中にentryタグが繰り返しでてきます。

そこで繰り返しているentryノードを1件づつ取り出す必要があります。繰り返して取り出すときに,for-each-in というあらたにAS3で追加されたループ処理命令を使用します。

たとえば,<entries>の中の<entry>を取り出すには,次のように書きます。

for each (targetdata in entries.*){
   //<entries>直下のノードすべて(*)が,1件単位で取り出され
   //targetdataには,1件の<entry>が割り当てられることになります。
   }

これを,実際の変数で記述すると次のようになります。

for each (var entrydata:XML in myXML.*) {
   //entrydata の中のimgタグのsrc属性を調べる
   trace(entrydata.img.@src)
}

for-each-inは,ノードを1件単位で取り出す命令のため,必ずしも,今回のような同じノード名の繰り返し以外でも使用できます。

URLRequestでアクセス

最後にXMLデータの読み込みを実行します。URLLoaderクラスのload()メソッドを使用します。

var myURLRequest:URLRequest=new URLRequest("photo.xml");
myLoader.load(myURLRequest);

photo.xmlは,適宜,自分の環境にあったURLに直します。

AS3では,アクセスするアドレスのテキストは,常にURLRequestオブジェクトである必要があります。

URLRequestにするときは,new URLRequest("アクセスしたいURL")です。

このURLRequestオブジェクトを,myLoaderのload()メソッドの引数にして実行します。

全スクリプト

ここまでをまとめると,次のようになります。

スクリプト1

//読み込みオブジェクトの生成
var myLoader:URLLoader = new URLLoader();
//テキストデータという宣言
myLoader.dataFormat=URLLoaderDataFormat.TEXT;
//読み込み完了したらonLoaded()を実行
myLoader.addEventListener(Event.COMPLETE,onLoaded);
//読み込み完了時に実行される関数
function onLoaded(e:Event):void {
   //XMLデータとして読み込んだテキストデータをパース
   var myXML:XML=new XML(e.target.data);
   //E4XでmyXMLを解析
   for each (var entrydata:XML in myXML.*) {
      //entrydata の中のimgタグのsrc属性を調べる
      trace("src",entrydata.img.@src)
   }
}
//文字列をURLRequestオブジェクトにする
var myURLRequest:URLRequest=new URLRequest("photo.xml");
//XML読み込み実行
myLoader.load(myURLRequest);

動作テスト

  1. スクリプト1をAS3で新規作成したFlashムービーのフレームにペーストします。

    ASパネル

  2. new URLRequest("photo.xml"); のXMLを自分の環境に合わせて書き換えます。
    例:http://www.3oclock.com/my_first_blog-gihyojp/photo.xml
  3. ムービープレビューします。

サンプルのFlaファイル(CS4専用)ダウンロードできます。

正しく動作すれば,次のようにトレース結果が出力されます。

トレース結果

まとめ

ここまでできれば,後は,このトレースしている内容を変数に格納し,何らかのタイミングで,画面に読み込めば良さそうです。

今回は,XMLデータをFlashに読み込むところまでを作業しました。

次回は,このデータを使用して,写真を読み込み表示します。

著者プロフィール

NORI(伊藤のりゆき)

Twitter:@nori_togoru

有限会社トゴル・カンパニー代表。Flashアクセシビリティをきっかにアクセシビリティ全般に興味を持つ。UIデベロッパとして企業用WebアプリケーションのUIデザインを行う。写真集「Snap or Nothing写真集」(iTunes AppStoreにて)をリリースするなど写真家としても活動している。