XML對象是重要的數據傳輸技術。對於用於用戶交互開發的Flex技術,訪問XML中的數據並用於顯示是Flex開發中最重要的環節。
對於XML對象,ActionScript 3.0提供多種訪問方法。基於對象的訪問方法主要是使用“.”和“..”操作符。在使用“.”操作符時可以直接通過節點名稱訪問到節點。訪問方式如下所示。
var flexXML:XML=<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
var flexXMLList:XMLList=flexXML.FlashPlayer; //使用“.”操作符訪問返回值爲一個XMLList對象
trace(flexXML.toString());
使用“.”操作符進行訪問時,返回值爲一個XMLList對象。因爲無法判定在同一級別上是否有相同名稱的節點,所以在本例中XMLList只有一個節點。以上代碼輸出結果如下所示。
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
而“..”操作符是忽略訪問級別,直接訪問XML對象中所有與指定節點名相同的節點。返回值爲XMLList。具體使用方法如下所示。
var flexXML:XML=<RIA>
<FlashPlayer>
<Name>FlashPlayer9</Name>
<Flash>
<Name>Flash CS3</Name>
</Flash>
<Flex>
<Name> Flex3</Name>
</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
var flexXMLList:XMLList=flexXML..Name; //通過“..”操作符忽略訪問級別
trace(flexXMLList.toString());
在本例中擁有Name子節點的父節點不在同一級別,但都能以一個統一的XMLList對象返回。上面的代碼輸出結果如下所示。
<Name>FlashPlayer9</Name>
<Name>Flash CS3</Name>
<Name> Flex3</Name>
可以通過XML對象的方法進行訪問。例如,可以通過parent方法訪問到當前節點的父節點。同時可以通過“[]”和索引值的方式訪問到XMLList中,指定索引的節點。如下代碼所示。
var flexXML:XML=<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
var flexXML1:XML=flexXML.FlashPlayer[0].Flash[0].parent();
trace(flexXML1);
上面代碼中flexXML.FlashPlayer[0].Flash[0]訪問到的是XML對象中的Flash節點,再通過parent()方法返回該節點的父節點。上面代碼輸出結果如下所示。
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
對於子節點的訪問還可以通過child方法進行訪問。使用child方法進行子節點的訪問需要指定子節點的名稱。如下代碼所示。
var flexXML:XML=<RIA>
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
<Ajax>
<GoogleAjax>GoogleAjax1.0</GoogleAjax>
</Ajax>
</RIA>
var flexXMLList:XMLList=flexXML.child(“FlashPlayer”); //使用child方法訪問節點需要指定節點名稱
trace(flexXML.toString());
通過child指定節點名稱的方法訪問節點,可以在運行時改變節點名稱的字符串。這樣就避免了在程序中將訪問節點方式寫死引發的問題。上面代碼輸出內容如下所示。
<FlashPlayer>
<Flash>Flash CS3</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
訪問XML節點的方式有很多種,在實際使用中,要根據具體需要進行選擇。