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で取り上げてほしいネタは?

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

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

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

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

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

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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

最近のコメント