Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > 處理 XML > 用來處理 XML 的 E4X | |||
ECMAScript for XML 規格定義了一組類別與功能,可供您用來處理 XML 資料。這些類別與功能統稱為 E4X。ActionScript 3.0 包含下列 E4X 類別:XML、XMLList、QName 和 Namespace。
E4X 類別的各項方法、屬性與運算子都是針對下列目標而設計:
.) 運算子。|
注意 |
|
ActionScript 2.0 採用了一種 XML 類別。在 ActionScript 3.0 時,此類別被重新命名為 XMLDocument,以免跟屬於 E4X 一部分的 ActionScript 3.0 XML 類別發生衝突。在 ActionScript 3.0 中,從先前版本遺留下來的 XMLDocument、XMLNode、XMLParser 以及 XMLTag 類別都會包含在 flash.xml 套件內,主要用來提供與先前版本的相容性支援。新的 E4X 類別都是核心類別,因此您不需匯入套件就能加以使用。本章將不會深入探討舊版 ActionScript 2.0 的 XML 類別。如需有關這些類別的詳細資訊,請參閱ActionScript 3.0 語言和組件參考中的 flash.xml 套件。 |
以下是使用 E4X 來處理資料的範例:
var myXML:XML =
<order>
<item id='1'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<item id='2'>
<menuName>fries</menuName>
<price>1.45</price>
</item>
</order>
您的應用程式經常會從外部來源 (例如網路服務或是 RSS Feed) 載入 XML 資料。然而,為求清楚說明,本章所述的這個範例則會將 XML 資料指派為常值。
如下列程式碼所示,E4X 包含某些直覺式的運算子,例如點 (.) 和特質識別名稱 (@) 運算子,以便在 XML 中存取屬性與特質:
trace(myXML.item[0].menuName); // 輸出:burger trace(myXML.item.(@id==2).menuName); // 輸出:fries trace(myXML.item.(menuName=="burger").price); // 輸出:3.95
您可以使用 appendChild() 方法,將新的子節點指定給 XML,如下列程式碼片段所示:
var newItem:XML =
<item id="3">
<menuName>medium cola</menuName>
<price>1.25</price>
</item>
myXML.appendChild(newItem);
@ 和 . 運算子不僅可以用來讀取資料,也可以用來指定資料,如下所示:
myXML.item[0].menuName="regular burger"; myXML.item[1].menuName="small fries"; myXML.item[2].menuName="medium cola"; myXML.item.(menuName=="regular burger").@quantity = "2"; myXML.item.(menuName=="small fries").@quantity = "2"; myXML.item.(menuName=="medium cola").@quantity = "2";
您可以使用 for 迴圈重複執行 XML 的節點,如下所示:
var total:Number = 0;
for each (var property:XML in myXML.item)
{
var q:int = Number(property.@quantity);
var p:Number = Number(property.price);
var itemTotal:Number = q * p;
total += itemTotal;
trace(q + " " + property.menuName + " $" + itemTotal.toFixed(2))
}
trace("Total: $", total.toFixed(2));
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000124.html