Flash CS3が備えるActionScript3.0では,XML形式(eXtensible Markup Language形式)のデータを扱うための「XMLクラス」が,格段に扱いやすくなりました。XMLをそのままコード内に記述したり,E4Xで定められた記法を使って,各要素へと簡単にアクセスができるようになっています。

 最近ではXML形式のデータを介したデータのやり取りや,Webサービスなども盛んなので,知っておくと大変便利なクラスです。今回は,XMLデータの読み込み・生成から,個々の要素へのアクセスの方法や抽出方法についてご紹介します。

 図1では,Flashムービーと同じディレクトリにある「xmlData.xml」という名前のXMLファイルを読み込んで,その内容を表示しています。また,ムービー右上のコンボボックスを操作すると,読み込んだXMLデータから,任意の物を抽出して表示します。

図1●XMLデータを読み込んで表示するサンプル
図1●XMLデータを読み込んで表示するサンプル
[クリックすると別ウィンドウでムービーを開きます。サンプル・ファイルはこちらからダウンロードできます]

外部のXMLデータを読み込む

 XMLクラスのインスタンスの生成方法は,他のクラスと同じです。new演算子を使うだけです。

var xml:XML = new XML();

 しかし,XML形式のデータを扱う場合は,おそらく,すでにどこかにあるXMLファイルを読み込んだり,何らかの構造をもったデータを自分で用意することがほとんどでしょう。そのため,上記のような,まっさらなXMLの作成をするよりも,いきなり構造を持ったXMLデータを作成してしまうほうが多かったりします。

 このようなXMLデータの作成方法には,2通りあります。

 ひとつ目は,XMLファイルを読み込んだ時などに便利な,「文字列からの作成」方法です。手順は簡単,new演算子を使ってXMLクラスのインスタンスを生成する際に,引数としてXML表現を持った文字列(つまり,XMLとして妥当な文字列です)を指定するだけです。

var xml:XML = new XML("文字列");

 例えば,Flashムービーと同じディレクトリ内にあるxmlファイル「xmlData.xml」(図2)を読み込んで,変数xmlに格納するとします。

図2●読み込むXMLファイルの内容
図2●読み込むXMLファイルの内容

 この場合は,次のようにコードを記述します。実行結果は図3のようになります。

//「xmlData.xml」を読み込んで,変数xmlに格納
var xml:XML;
/*読み込み処理自体はテキスト・ファイルと同じく
URLLoader+URLRequestで作成*/
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("xmlData.xml");
loader.addEventListener(Event.COMPLETE,traceData);
function traceData(event:Event) {
  //読み込んだ内容を元に,XMLデータを作成
  xml = new XML(event.target.data);
  trace("あんぱんの価格は、" +
    xml.item.(name=="あんぱん").price + "円です。");
}
loader.load(request);

図3●実行結果。XMLの内容を出力する
図3●実行結果。XMLの内容を出力する

 XMLファイルといえども,テキスト・ファイルの一種ですので,前回学習したテキスト・ファイルを読み込む処理の時と同様に,URLLoaderクラスと,URLRequestクラスを組み合わせた処理を使えばOKです。

 ひとつ違う点は,読み込み完了後の処理で,読み込んだXMLファイルの内容を,そのままXMLクラスのコンストラクタ関数に,引数として渡している点です。

xml = new XML(event.target.data);

 URLLoaderで読み込んだテキストの内容は,dataプロパティに格納されていましたね。そこで,dataプロパティの内容を,そのまま引数として渡してしまえばOKというわけです。これで変数xmlには,読み込んだファイルの内容を元にしたXMLデータが作成されます。

 試しに,変数xmlに対して「item内で,nameの値が『あんぱん』の物のpriceの値を表示」という命令をしてみると,きちんと「80」と,ファイルに記述した内容が取得できていることが確認できますね(XMLデータ内の各要素へのアクセス方法は,後でご説明します)。

 また,今回はサンプルとして,XML形式のファイルを読み込みましたが,WebサービスなどのAPIを利用する際は,多くの場合,この方法と同じようにして,サーバー側がXML形式で返してくる情報を読み込み,XMLクラスのコンストラクタの引数に渡し,アクセスする,という手順を取ります。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら