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