XML の型変換
Flash Player 9 以降、Adobe AIR 1.0 以降
XML オブジェクトと XMLList オブジェクトは、String 値に変換できます。同様に、ストリングを XML オブジェクトまたは XMLList オブジェクトに変換することもできます。また、XML の属性値、名前、テキスト値はすべてストリングです。以降のセクションでは、これらすべてに関する XML 型変換について説明します。
XML および XMLList オブジェクトからストリングへの変換
XML クラスと XMLList クラスには、toString() メソッドと toXMLString() メソッドがあります。toXMLString() メソッドは、XML オブジェクトのすべてのタグ、属性、名前空間宣言、および内容を含んだストリングを返します。複合内容(子エレメント)を持つ XML オブジェクトの場合、toString() メソッドは toXMLString() メソッドとまったく同じように機能します。テキストエレメントだけを含む単純内容の XML オブジェクトの場合、toString() メソッドは、次の例のように当該エレメントのテキストの内容だけを返します。
var myXML:XML =
<order>
<item id='1' quantity='2'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<order>;
trace(myXML.item[0].menuName.toXMLString());
// <menuName>burger</menuName>
trace(myXML.item[0].menuName.toString());
// burger
toString() または toXMLString() を指定せずに trace() メソッドを使用すると、次のコードのように、データはデフォルトで toString() メソッドを使用して変換されます。
var myXML:XML =
<order>
<item id='1' quantity='2'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<order>;
trace(myXML.item[0].menuName);
// burger
コードのデバッグ用に trace() メソッドを使用する際は、toXMLString() メソッドを使用し、より完全な形でデータを出力することがしばしば役立ちます。
ストリングから XML オブジェクトへの変換
次のように new XML() コンストラクターを使用すると、ストリングから XML オブジェクトを作成できます。
var x:XML = new XML("<a>test</a>");
XML として有効でないストリングや、整形式の XML になっていないストリングを XML に変換しようとすると、次のようにランタイムエラーが発生します。
var x:XML = new XML("<a>test"); // throws an error
ストリングから属性値、名前、テキスト値への変換
XML の属性値、名前、テキスト値はすべて String データ型で表現されており、場合によっては他のデータ型に変換する必要があります。例えば、次のコードでは Number() 関数を使用してテキスト値を数値に変換します。
var myXML:XML =
<order>
<item>
<price>3.95</price>
</item>
<item>
<price>1.00</price>
</item>
</order>;
var total:XML = <total>0</total>;
myXML.appendChild(total);
for each (var item:XML in myXML.item)
{
myXML.total.children()[0] = Number(myXML.total.children()[0])
+ Number(item.price.children()[0]);
}
trace(myXML.total); // 4.95;
このコードで Number() 関数を使用しないとすると、+ 演算子がストリング連結の演算子と解釈され、その結果、最終行にある trace() メソッドの出力は次のようになります。
01.003.95