アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » ActionScript 3.0で始めるオブジェクト指向スクリプティング » 第27回 XMLデータを扱う

ActionScript 3.0で始めるオブジェクト指向スクリプティング

第27回 XMLデータを扱う

前回の第26回は「 外部データの読込み待ち」について説明した。今回は,外部データとしてもよく用いられるXMLデータの扱いだ。ActionScript 3.0におけるXMLの仕様は,「ECMAScript for XML(E4X)」に準拠する(※1)。なお,本連載ではXML自体の説明は予定していないので,必要があればWebや参考書などで学習してほしい。

※1
E4Xの仕様は「ECMAScript for XML (E4X) Specification」として第2版が公開されている。また,ボランティアの方が日本語訳された「ECMAScript for XML (E4X) 仕様邦訳」も参考になる。

外部XMLデータの読込み

まずは,前回の復習も兼ねて,外部XMLファイルを読込んでみよう。用いるのはURLLoaderクラスだ。前回学習したとおり,ロード待ちの処理が必要になる。XMLデータはつぎのように作成して,"adobe_cs4.xml"という名前でFlashムービー(FLA)ファイルと同じ階層に保存しておく。

<?xml version="1.0" encoding="UTF-8"?>
<cs4>
  <product suite="Web">
    <name>Flash CS4 Professional</name>
    <price>699</price>
  </product>
  <product suite="Web">
    <name>Dreamweaver CS4</name>
    <price>399</price>
  </product>
  <product suite="Design">
    <name>Photoshop CS4</name>
    <price>699</price>
  </product>
  <product suite="Design">
    <name>Illustrator CS4</name>
    <price>599</price>
  </product>
</cs4>

URLLoaderクラスで外部XMLファイルを読込むフレームアクションは,以下のスクリプト1のとおりだ。ロード待ちまでの構成は,前回のスクリプト2と基本的に変わらない。

スクリプト1 URLLoaderクラスで外部XMLファイルをロードしてTextFieldインスタンスに設定する

// フレームアクション
// フレームアクション
var _txt:TextField = new TextField();
var myLoader:URLLoader = new URLLoader();
var myRequest:URLRequest = new URLRequest("adobe_cs4.xml");
addChild(_txt);
_txt.autoSize = TextFieldAutoSize.LEFT;
_txt.wordWrap = true;
myLoader.addEventListener(Event.COMPLETE, xSetText);
myLoader.load(myRequest);
function xSetText(eventObject:Event):void {
  var cs4_xml:XML = XML(myLoader.data);   // テキストをXMLデータに変換
  // 以下の2行のステートメントについては後述
  var product_web:XMLList = cs4_xml.product.(@suite == "Web");
  var name_str:String = product_web[0].name.toString();
  _txt.text = name_str;
}

外部XMLファイルロードした後,テキストデータをXMLとして解釈する必要がある。それが XML()関数だ。引数にテキストデータ(文字列)を渡せば,XMLに変換して返す。そのつぎの処理は,XMLデータから,<product>要素のsuite 属性が"Web"のノード群を取出し,その最初(インデックス0)のノードの製品名である<name>要素のテキストを,TextField インスタンスに設定している(図1)。XMLを扱うこの2行のステートメントについては,この後項を改めて解説する。

図1 ロードしたXMLデータから指定の製品名をTextFieldインスタンスに設定して表示

図1 ロードしたXMLデータから指定の製品名をTextFieldインスタンスに設定して表示

XMLデータから必要な値を取出す

つぎは,XMLデータから必要な値を指定して取出す方法を紹介する。その前に,スクリプトをできるだけシンプルにするため,XMLデータは外部ファイルから読込まず,XMLインスタンスとして生成しよう。

XMLデータはスクリプト上で,つぎのようにタグ(<>)を使って記述する(※2)。変数(プロパティ)や関数(メソッド)から値を取出すのでなく,このように直接プログラムに記述される値を「リテラル」という(第17回「 3D風に回転するアニメーション」注※4参照)。データ型の指定はXMLだ。

var cs4_xml:XML =
<cs4>
  <product suite="Web">
    <name>Flash CS4 Professional</name>
    <price>699</price>
  </product>
  <product suite="Web">
    <name>Dreamweaver CS4</name>
    <price>399</price>
  </product>
  <product suite="Design">
    <name>Photoshop CS4</name>
    <price>699</price>
  </product>
  <product suite="Design">
    <name>Illustrator CS4</name>
    <price>599</price>
  </product>
</cs4>;

XMLインスタンスをtrace()関数で[出力]すると,XMLデータの内容がそのまま文字列として表示される(図2)。

図2 trace()関数でXMLインスタンスのデータが文字列として表示される

図2 trace()関数でXMLインスタンスのデータが文字列として表示される

※2
XMLデータの最後にセミコロン(;)をつけないと,[自動フォーマット]したときにシンタックスエラーになるので注意しよう。もっとも,[シンタックスチェック]してもエラーは出ず,コンパイル(SWFファイルの書出し)も問題なく行われる。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

  • ActionScript 3.0プロフェッショナルガイド

    ActionScript 3.0プロフェッショナルガイド(毎日コミュニケーションズ)

  • ActionScript 3.0辞典 [FlashPlayer 10/9対応]

    ActionScript 3.0辞典 [FlashPlayer 10/9対応](翔泳社)

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス