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

如果您使用 trace() 方法而不指定 toString()toXMLString(),則預設會使用 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() 方法,因此 trace() 方法會輸出更完整的資料。

將字串轉換為 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