XML の型変換

XML オブジェクトと XMLList オブジェクトは、String 値に変換できます。同様に、ストリングを XML オブジェクトまたは XMLList オブジェクトに変換することもできます。また、XML の属性値、名前、テキスト値はすべてストリングです。以降のセクションでは、これらすべてに関する XML 型変換について説明します。

サブトピック

XML および XMLList オブジェクトからストリングへの変換
ストリングから 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"); // エラーがスローされる

ストリングから属性値、名前、テキスト値への変換

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.35;

このコードで Number() 関数を使用しないとすると、+ 演算子がストリング連結の演算子と解釈され、その結果、最終行にある trace() メソッドの出力は次のようになります。

01.003.95

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000131.html