精通Flex 3.0――4.6.3 訪問XML子節點

  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節點的方式有很多種,在實際使用中,要根據具體需要進行選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章