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