精通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节点的方式有很多种,在实际使用中,要根据具体需要进行选择。

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