Flash CS3が備えるActionScript3.0では,XML形式(eXtensible Markup Language形式)のデータを扱うための「XMLクラス」が,格段に扱いやすくなりました。XMLをそのままコード内に記述したり,E4Xで定められた記法を使って,各要素へと簡単にアクセスができるようになっています。
最近ではXML形式のデータを介したデータのやり取りや,Webサービスなども盛んなので,知っておくと大変便利なクラスです。今回は,XMLデータの読み込み・生成から,個々の要素へのアクセスの方法や抽出方法についてご紹介します。
図1では,Flashムービーと同じディレクトリにある「xmlData.xml」という名前のXMLファイルを読み込んで,その内容を表示しています。また,ムービー右上のコンボボックスを操作すると,読み込んだXMLデータから,任意の物を抽出して表示します。
![]() |
図1●XMLデータを読み込んで表示するサンプル [クリックすると別ウィンドウでムービーを開きます。サンプル・ファイルはこちらからダウンロードできます] |
外部のXMLデータを読み込む
XMLクラスのインスタンスの生成方法は,他のクラスと同じです。new演算子を使うだけです。
|
しかし,XML形式のデータを扱う場合は,おそらく,すでにどこかにあるXMLファイルを読み込んだり,何らかの構造をもったデータを自分で用意することがほとんどでしょう。そのため,上記のような,まっさらなXMLの作成をするよりも,いきなり構造を持ったXMLデータを作成してしまうほうが多かったりします。
このようなXMLデータの作成方法には,2通りあります。
ひとつ目は,XMLファイルを読み込んだ時などに便利な,「文字列からの作成」方法です。手順は簡単,new演算子を使ってXMLクラスのインスタンスを生成する際に,引数としてXML表現を持った文字列(つまり,XMLとして妥当な文字列です)を指定するだけです。
|
例えば,Flashムービーと同じディレクトリ内にあるxmlファイル「xmlData.xml」(図2)を読み込んで,変数xmlに格納するとします。
![]() |
図2●読み込むXMLファイルの内容 |
この場合は,次のようにコードを記述します。実行結果は図3のようになります。
|
![]() |
図3●実行結果。XMLの内容を出力する |
XMLファイルといえども,テキスト・ファイルの一種ですので,前回学習したテキスト・ファイルを読み込む処理の時と同様に,URLLoaderクラスと,URLRequestクラスを組み合わせた処理を使えばOKです。
ひとつ違う点は,読み込み完了後の処理で,読み込んだXMLファイルの内容を,そのままXMLクラスのコンストラクタ関数に,引数として渡している点です。
|
URLLoaderで読み込んだテキストの内容は,dataプロパティに格納されていましたね。そこで,dataプロパティの内容を,そのまま引数として渡してしまえばOKというわけです。これで変数xmlには,読み込んだファイルの内容を元にしたXMLデータが作成されます。
試しに,変数xmlに対して「item内で,nameの値が『あんぱん』の物のpriceの値を表示」という命令をしてみると,きちんと「80」と,ファイルに記述した内容が取得できていることが確認できますね(XMLデータ内の各要素へのアクセス方法は,後でご説明します)。
また,今回はサンプルとして,XML形式のファイルを読み込みましたが,WebサービスなどのAPIを利用する際は,多くの場合,この方法と同じようにして,サーバー側がXML形式で返してくる情報を読み込み,XMLクラスのコンストラクタの引数に渡し,アクセスする,という手順を取ります。