Macromedia Flash非公式テクニカルノート
@属性識別演算子
ID: FN1009001 |
Platform: All |
Version: CS3/ActionScript 3.0 |
Runtime: Flash Player 9/AIR 1.0 |
rawDataプロパティ |
文法
|
xmlObject.@attributeName
xmlObject.["@" + attributeName]
xmlObject.@[attributeName]
|
パラメータ
|
attributeName:* - 属性名。
|
説明
XMLもしくはXMLListオブジェクトに対して、XMLデータの属性(アトリビュート)を指定します。@演算子の後に属性名を書添えます。配列アクセス演算子[]を用いるときは、属性名は文字列で加えます。したがって、属性名の文字列を変数に入れて指定できます。なお[ヘルプ]では、配列アクセス演算子を使わない記述が推奨されています[*1]。
すべての属性名のXMLListオブジェクトを得るには、ワイルドカードを添えた@*が指定できます[*2]。
属性名が予約語の場合には、配列アクセス演算子を使わず@演算子に続けて属性名を添える書き方ではエラーになります(図001)。このようなときは、配列アクセス演算子[]を使って属性名は文字列で指定します。また、XML.attribute()メソッドを使えば、予約語の属性を文字列で引数に渡して値が得られます。
図001■予約語を@属性名のシンタックスで指定するとエラーになる
[*1] Flash Professional CS5の[ActionScript 3.0リファレンスガイド]の[演算子]のページで「@ attribute identifier演算子」の項には、つぎのように説明されています。
属性にアクセスするには、myXML.attribute("id")、myXML["@id"]、およびmyXML.@["id"]シンタックスを使用することもできます。シンタックスmyXML.@idを推奨します。
[*2] 前出注[*1]の[ヘルプ]の説明には、「@*」が「@~~」と誤って記載されています(「Flash Professional CS5ヘルプ正誤表」参照)。
|
例
つぎのスクリプトは、3行のtrace()関数が属性suiteの値としていずれも「Web」を[出力]パネルに表示します。
var flash_xml:XML = <product suite="Web">
<name>Flash</name>
<price>699</price>
</product>
trace(flash_xml.@suite); // 出力: Web
trace(flash_xml["@suite"]); // 出力: Web
trace(flash_xml.@["suite"]); // 出力: Web
|
()演算子と組合わせれば、指定した属性値に当てはまるXMLListオブジェクトが得られます[*3]。以下のスクリプトは、XMLデータからsuite属性が"Web"のproductノードを取出し、[出力]パネルにつぎのように表示します。
<product suite="Web">
<name>Flash</name>
<price>699</price>
</product>
<product suite="Web">
<name>Dreamweaver</name>
<price>399</price>
</product>
var cs3_xml:XML = <cs3>
<product suite="Web">
<name>Flash</name>
<price>699</price>
</product>
<product suite="Web">
<name>Dreamweaver</name>
<price>399</price>
</product>
<product suite="Design">
<name>Photoshop</name>
<price>649</price>
</product>
<product suite="Design">
<name>Illustrator</name>
<price>599</price>
</product>
</cs3>;
var products:XMLList = cs3_xml.product;
var webProducts:XMLList = products.(@suite == "Web");
trace(webProducts);
|
[*3] 予約語を属性名として指定したいときには、配列アクセス演算子[]を使って文字列で記述します。
var as3_xml:XML = <as3>
<method class="XML">
attribute()
</method>
<method class="XMLList">
attribute()
</method>
</as3>;
var method:XMLList = as3_xml.method.(@["class"] == "XML");
trace(method); // 出力: attribute()
|
|
参考
[ActionScript 3.0リファレンスガイド] > [演算子]「@ attribute identifier演算子」
関連項目
[XMLの操作]
_____
作成者: 野中文雄
作成日: 2010年9月15日