E4X では XML の名前空間も使用できます。ここで登場するNamespace クラス (livedocs@lab) は以前にアクセス制御の使用目的で紹介した名前空間の Namespace と同じものです。
今回は、以下のサンプルを使って名前空間で修飾された要素や属性へのアクセス方法を説明します。
E4X では XML の名前空間も使用できます。ここで登場するNamespace クラス (livedocs@lab) は以前にアクセス制御の使用目的で紹介した名前空間の Namespace と同じものです。
今回は、以下のサンプルを使って名前空間で修飾された要素や属性へのアクセス方法を説明します。
属性値を取得するためのメソッドとしては attributes() と attribute() があります。
public attributes() : XMLList public attribute(attributeName:String) : *
今回は要素を扱うためのメソッドをいくつか紹介します。
1つ目は、child() メソッドです。child() メソッドは . (ドット)オペレータと組み合わせて使用します。引数には要素名を指定できます。次の例では myOrder.item.child("name") という使い方がされていますが、これは myOrder.item.name と同じ結果になります。
XML オブジェクトを文字列に変換するには toString() メソッドか toXMLString() メソッドを使います。どちらもほぼ同じ出力になりますが、テキストノードを出力しようとしたときだけ違う動きをします。toXMLString() ではタグ付きで出力されますが toString() の場合はコンテンツのみが出力されます。
前の記事で書いたように . や .. オペレータの結果は XMLList オブジェクトになります。この XMLList 内の XML オブジェクトを for 文を使って処理する方法を紹介します。for ... in と for each ... in の2種類のやり方があります。
AS3 では XML データの階層構造をたどって目的の要素にアクセスするのに . オペレータと .. オペレータを使用することができます。
どちらを使用した場合も、返される値の型は XMLList (livedocs@lab) です。 XML クラスはルートノードを一つしか持ちませんが XMLList クラスは複数持つことができます。メソッドは両者共通です。
E4X (ECMAScript for XML) は ECMAScript3 の拡張として開発された XML データを扱うための仕様です。2nd Edition が昨年末に公開されています(こちら)。AS3 では新しく E4X のクラスがサポートされ、従来よりもずっと簡単に XML データを扱うことができるようになりました。
AS3 でも AS2 で使われていた XML クラスは XMLDocument と名前を変えて他の関連クラス (XMLNode 等) と共に flash.xml パッケージに含まれています。しかし、これは過去に開発したコードのサポートが主目的で、今後の使用を推奨するものではありません。
さて、まず手始めに E4X の簡単な例を見てみましょう。以下のような XML 文書があるとします。
今回は AS3 のthis と Java の this はよく似ているという話です。
ActionScript のようなプロトタイプベースの言語では、this の扱いが少々分かりにくくなります。 たとえば以下のような例を考えて見ましょう。
Flex2 のベータ1からインスタンス変数の宣言に prototype 修飾子を使用することができるようになりました。例えば、以下の例では pProp という変数に prototype 修飾子が定義されています。
public class ProtoSample { public prototype var pProp:int = 10; }
Cairngorm 2.0 アルファも公開されました。(こちらです)
さて、Flex2 のベータ1では Player API や言語レベルでの変更が行われています。このため、アルファ版で作成したコードは一部修正の必要があるケースがあります。今回は、変更された箇所の中から今までの記事に関連する項目をお伝えします。
Flex2.0 のベータ1が公開されました。アドビラボから入手可能です。
待望の Flex Enterprise Service 2.0 (FES2) もアップされていますし、Flex Builder 2.0 もずいぶんとよくなっています。是非、ダウンロードして試してみてください。
今回のアナウンスでは、以下の無償ライセンスに関する発表がありました。(最終的な価格体系は製品発売時に発表されます。念のため。)
また、Flex アプリケーションと ColdFusion サーバを連携させる ColdFusion/Flex Connectivity のベータもあわせて公開されています。
ベータ1になり、アルファのときから仕様の変わっている箇所が多々あります。今までの Blog に関連する変更点は以降の記事でフォローしていく予定です。
それでは、早速アドビラボを覗いてみてください。