在ActionScript 3.0中,提供了三種最基本的方法創建XML對象。
q 第一種通過表達式的方式直接建立XML對象。如下代碼所示
var flexXML:XML=
<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
注意:使用XML表達式的時候與一般的賦值語句不同。語句結束沒有“;”標識符,直接結束。XML字符串也不需要通過引號或者單引號進行限定。
q 第二種方式是通過XML對象的構造函數的方式構建XML對象。如下代碼所示。
var flexXMLStr:String="<RIA>"
+"<FlashPlayer>"
+"<Flash>Flash CS3</Flash>"
+"<Flex>Flex3</Flex>"
+"</FlashPlayer>"
+"<Ajax>"
+"<GoogleAjax>GoogleAjax1.0</GoogleAjax>"
+"</Ajax>"
+"</RIA>";
var flexXML1:XML=new XML(flexXMLStr);
q 第三種方式是通過加載外部XML文件的方式構建XML對象。這種加載的本質其實也是使用構造函數的方式進行加載。XML文件RIA.xml文件內容如下。
<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
可以通過制定RIA.xml文件位置的方式加載該文件內容到XML對象中,。代碼如下所示。
var flexXML2:XML;
var flexLoader:URLLoader = new URLLoader();
var flexRequest:URLRequest = new URLRequest("RIA.xml");
function onComplete(event:Event):void
{
var flexLoader:URLLoader = event.target as URLLoader;
if (flexLoader != null)
{
flexXML2 = new XML(flexLoader.data);
trace(flexXML2.toXMLString());
}
else
{
trace("加載錯誤!");
}
在上面的代碼中加載外部的資源是異步進行的。需要聲明一個事件處理機制,通過這個事件監聽來響應加載結束XML的事件。
注意:在創建XML對象時,XML內容必須遵循XML的規範。讀者可以在www.w3c.org網站上詳細察看這個規範。
以上三種方式是最常用的創建XML對象的方法。還會有一些特殊的創建XML對象的方法,例如使用XMLSocket對象構建XML對象。XMLSocket對象會在稍後內容講解。
創建的XML對象中,有一系列屬性和方法進行簡單的XML處理。常用屬性如表4.5所示。常用方法如表所示。
表 XML對象常用屬性
屬性名稱 |
屬性分類 |
屬性說明 |
ignoreComments |
註釋與說明屬性 |
取值ture或false,表明讀取XML時是否忽略註釋。 |
ignoreProcessingInstructions |
註釋與說明屬性 |
取值ture或false,表明讀取XML時是否忽略說明和介紹。 |
ignoreWhitespace |
空白 |
取值ture或false,表明是否忽略XML內容中,純粹的空白。 |
prettyIndent |
格式屬性 |
取值true或false,表明是否輸出成字符串時帶有縮緊。 |
prettyPrinting |
格式屬性 |
取值true或false,表明打印輸出時有嚴格的打印格式。 |
表 XML對象常用方法
方法名稱 |
方法分類 |
方法說明 |
appendChild |
操作節點方法 |
添加節點到XML對象的尾部。參數爲一個XML對象或者XML表達式。 |
child |
操作節點方法 |
返回XML對象的子節點,參數爲子節點的名稱 |
children |
操作節點方法 |
返回XML對象的所有子節點,返回類型爲XMLList類型。 |
elements |
操作節點方法 |
返回XML對象的子節點或者屬性,參數爲子節點或屬性名稱。 |
insertChildAfter |
操作節點方法 |
插入節點到指定節點之後,參數爲指定節點。 |
insertChildBefore |
操作節點方法 |
插入節點到指定節點之前,參數爲指定的節點。 |
parent |
操作節點方法 |
返回當前節點的父節點。 |
prependChild |
操作節點方法 |
返回當前節點的前一個節點。 |
attribute |
操作屬性方法 |
返回指定的屬性,參數爲指定的屬性名稱。 |
attributes |
操作屬性方法 |
返回XML對象的所有屬性。 |
hasComplexContent |
內容操作方法 |
判斷當前節點內容是否爲複雜內容,返回值爲true或false。複雜內容是指包括有子節點的XML對象。 |
hasSimpleContent |
內容操作方法 |
判斷當前節點內容是否爲簡單內容,返回指爲true或false。簡單內容是指單一的字符串內容。 |
toString |
內容操作方法 |
將XML對象輸出爲字符串內容。 |
toXMLString |
內容操作方法 |
輸出爲XML字符串的內容。 |
copy |
對象操作方法 |
拷貝XML對象的副本,返回值爲當前節點的內容。 |
valueOf |
對象操作方法 |
返回指定節點內容,不包括節點的表示。 |
length |
對象操作方法 |
返回當前XML對象下一級節點個數。 |
在操作XML對象的過程中還會經常使用XMLList對象。XMLList對象的方法與XML對象很像,使用起來具有統一性。XML的整體結構是一個樹型結構,所以在使用樹型結構的過程中,通過XML和XMLList對象的使用可以達到整體與部分一致的操作。這樣,就會使操作XML整體與操作XML對象的一部分一致。