サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

XMLNode.attributesプロパティ
(XML.attributesプロパティ)

ID: FN0509002 Product: Flash

Platform: All
Version: Flash 5 and above

シンタックス[*1]
my_xmlnode.attributes: Object

[*1] attributesは、XMLNodeクラスのプロパティです。XMLクラスは、XMLNodeクラスを継承しています。ActionScript定義済みクラスのActionScript 2.0クラス定義ファイルを格納するClassesフォルダには、XMLNode.asがあり、つぎのようなintrinsicクラスが定義されています(抜粋)。

スクリプト001■XMLNode.asファイル内のintrinsicクラス定義

intrinsic class XMLNode {
   var attributes:Object;
   var childNodes:Array;
   var firstChild:XMLNode;
   // ...[後略]...

XMLNode.attributesプロパティは、Object型で宣言されています。Flash MX 2004オンラインヘルプで、XML.attributesプロバティがArray型とされているのは誤りです(Macromedia LiveDocs Flash MX 2004のXML.attributesの項に加えられたFrancis Cheng氏による2005年1月19日付コメントを参照)。

説明
プロパティ; 指定のXMLまたはXMLNodeインスタンスに設定された属性すべてを格納するオブジェクト[*2]。XMLNode.attributesオブジェクトに対して、属性の名前がプロパティ名、属性値はプロパティ値として保持されます。XMLデータはテキストですので、属性値すなわちプロパティ値は文字列です。

XMLエレメントに設定された属性をすべて取出すには、オブジェクトのプロパティを調べるfor..inステートメントを用います。エレメントに属性がない場合、XMLNode.attributesプロパティは空のオブジェクトを返します。

[*2] Flash MX 2004オンラインヘルプのXML.attributesの項には、「結合配列」と説明されています。原文の"associateve array"は、通常「連想配列」と訳されます。エレメントに対して、インデックス番号でなく、名前を指定して値が取出せるオブジェクトをいいます。ActionScriptでは、Objectインスタンスがこれに当たります。

したがって、XMLNode.attributesプロパティを連想配列と考えること自体は、誤りとはいえません。しかし、Arrayインスタンスの配列と誤解を招きやすく、連想配列と呼ぶ利点はとくに考えられません。


つぎの例は、XMLインスタンスを作成し、エレメントを取出したうえで、属性を操作します。

スクリプト002■XMLエレメントの操作

// XMLインスタンスの作成
var my_xml:XML = new XML("<mytag name='Val'>item</mytag>");
// XMLエレメントの取得
var my_xmlnode:XMLNode = my_xml.firstChild;
// XMLエレメントはXMLNodeインスタンス
trace([my_xmlnode instanceof XML, my_xmlnode instanceof XMLNode]);   // 出力: false,true
// XMLエレメントと属性の確認
trace(my_xmlnode);   // 出力: <mytag name="Val">item</mytag>
trace(my_xmlnode.attributes.name);   // 出力: Val
// XMLエレメントに属性を追加
my_xmlnode.attributes.order = "first";
// XMLエレメントの再確認
trace(my_xmlnode);   // 出力: <mytag order="first" name="Val">item</mytag>
// すべての属性の確認
var oAttributes:Object = my_xmlnode.attributes;
for (var attribute_str:String in oAttributes) {
  trace([attribute_str, oAttributes[attribute_str]]);
   // 出力:
   // order,first
   // name,Val
}

Player
Flash Player 5以降。

参考
Flash MX 2004 ActionScript Language Reference: XML.attributes

_____

作成者: 野中文雄
作成日: 2005年9月7日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.