feb19.jp blog - life is creative!

AS3でXMLを読み込む

ブックマークに追加する tags:    

AS3でXMLを読み込む

最近忙しくてなかなか更新できないのですが、とりあえず、シンプルなXMLファイルを読み込んでアレコレしたいときのためのメモ。というわけで、以下、ソースと解説。

<?xml version="1.0" encoding="shift_JIS"?>
<data>
	<title>Unko</title>
	<img thumb="unko.jpg" src="unko.png"></img>
</data>

たとえばこんなXMLを読み込んでアレコレしたいというときは、こんなクラスを用意すると便利です。

package {
	import flash.events.EventDispatcher;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.system.System;
	import flash.events.Event;
	public class XMLLoader extends EventDispatcher {
		public static const LOAD_COMPLETE:String = "load_complete";
		private var xmlLoader:URLLoader;
		private var xml:XML;
		private var object:Object;
		public function XMLLoader(url:String, isUnicode:Boolean) {
			xmlLoader = new URLLoader();
			xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
			xmlLoader.addEventListener(Event.COMPLETE, onXMLLoaded);
			System.useCodePage = !isUnicode;
			xmlLoader.load(new URLRequest(url));
		}
		private function onXMLLoaded(e:Event):void {
			try {
				xml = new XML(xmlLoader.data);
				parseXML();
			} catch(err:TypeError) {
				trace(err.message);
			}
		}
		private function parseXML() {
			var obj = new Object();
			obj.title = xml.title;
			obj.img_thumb = xml.img.@thumb;
			obj.img = xml.img.@src;
			object = obj;
			dispatchEvent(new Event(LOAD_COMPLETE));
		}
		public function get rawXML():XML {
			return xml;
		}
		public function get data():Object {
			return object;
		}
	}
}

function parseXML()の中を変更すると、様々なXMLに対応できます。

で、Flashのフレームアクションで、こんな風に呼び出しましょう。
XMLLoaderの第二引数は、XMLファイルの文字エンコード形式がUnicodeならtrue、Shift_JISならfalseとして呼び出します。

var xmlLoader = new XMLLoader("myxml.xml", false);
xmlLoader.addEventListener(XMLLoader.LOAD_COMPLETE, onLoadCompleteHandler);
private function onLoadCompleteHandler(e:Event):void {
	var data = e.currentTarget.data;
	trace(data.title);
	trace(data.img_thumb);
	trace(data.img);
}

XMLのデータがトレースされます。

----

上のXMLLoaderを応用して作ったクラスで作ったAdobe AIR式Youtubeプレイヤー、「Simple Youtube Viewer」をバージョンアップしました。YoutubeAPI更新に対する修正です。

2008年03月22日09:51

Webデザインブログ

「AS3でXMLを読み込む」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/141

Navigation

古:ActionScript 3.0 ビジュアルリファレンス買いました
新:AS3のInteractiveObject.mouseEnabledにご注意
トップページ

Recently Entries
Flash 上でパブリッシュしたとき、型宣言されていない変数・関数があったら警告を出す
Flex SDK (mxmlc)や Flex Builder とかで...
Flash Builder 4 Standard 導入
色々メモリリークチェックとか出来る Premium は必要になってか...
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...