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

如果您使用 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"); // 擲回錯誤

從字串轉換為特質值、名稱和文字值

因為所有 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

Flash CS3

 

有新的意見加入至這個頁面時,傳送電子郵件給我 | 意見報告

目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000131.html