精通Flex 3.0――4.6.2 通过XML对象构建XML内容

  除了初始化构建XML对象时构建XML的内容,也可以通过XML类提供的方法在运行时动态的改变XML的内容。appendChildprependChild两个方法就是分别在XML对象的头部以及尾部添加节点。对于一个XML对象而言必须得有一个根节点。添加的操作必须作用在根节点之上。使用appendChild添加节点方式如下代码所示。

var flexXML:XML=<RIA></RIA>

var flexXML1:XML=    <FlashPlayer>

                                      <Flash>Flash CS3</Flash>

                                      <Flex>Flex3</Flex>

                                     </FlashPlayer>

var flexXML2:XML=    <Ajax>

                                      <GoogleAjax>GoogleAjax1.0</GoogleAjax>

                                     </Ajax>

flexXML=flexXML.appendChild (flexXML1);                                     //添加节点

flexXML=flexXML.appendChild(flexXML2);                             //添加节点

trace(flexXML.toString());

上面的代码通过appendChild方法添加节点,这样每次添加的节点都在XML对象的尾部。上面代码输出如下所示。

<RIA>

         <FlashPlayer>

                   <Flash>Flash CS3</Flash>

                   <Flex>Flex3</Flex>

         </FlashPlayer>

         <Ajax>

                   <GoogleAjax>GoogleAjax1.0</GoogleAjax>

         </Ajax>

</RIA>

如果使用prependChild方法添加节点,代码如下所示。

var flexXML:XML=<RIA></RIA>

var flexXML1:XML=    <FlashPlayer>

                                      <Flash>Flash CS3</Flash>

                                      <Flex>Flex3</Flex>

                                     </FlashPlayer>

var flexXML2:XML=    <Ajax>

                                      <GoogleAjax>GoogleAjax1.0</GoogleAjax>

                                     </Ajax>

flexXML=flexXML.prependChild (flexXML1);                                    //添加节点

flexXML=flexXML.prependChild (flexXML2);                                    //添加节点

trace(flexXML.toString());

使用prependChild方法添加节点,每次添加的节点都出现在XML对象的最前端。上面代码的输出结果如下所示。

<RIA>

         <Ajax>

                   <GoogleAjax>GoogleAjax1.0</GoogleAjax>

         </Ajax>

         <FlashPlayer>

                   <Flash>Flash CS3</Flash>

                   <Flex>Flex3</Flex>

         </FlashPlayer>

</RIA>

除了在XML对象首尾添加节点外。XML还提供两个方法insertChildAfterinsertChildBefore。通过这两个方法,可以指定节点插入的位置。insertChildAfter使用的方式如下代码所示。

var flexXML:XML=<RIA>

<FlashPlayer>

                              <Flash>Flash CS3</Flash>

                              </FlashPlayer>

<Ajax>

                              <GoogleAjax>GoogleAjax1.0</GoogleAjax>

                              </Ajax>

                </RIA>

var flexXML1:XML=  <Flash>Flash 8</Flash>

var flexXML2:XML=  <Flash>Flash MX2004</Flash>

flexXML=flexXML.insertChildAfter(flexXML.FlashPlayer [0],flexXML1);          //通过指定节点位置插入新的节点

flexXML=flexXML.insertChildAfter(flexXML.FlashPlayer [0],flexXML2);          //通过指定节点位置插入新的节点

trace(flexXML.toString());

在上面的代码中通过flexXML.FlashPlayer.Flash[0]是指定节点的位置。上面代码输出如下所示。

<RIA>

         <FlashPlayer>

                   <Flash>Flash CS3</Flash>

         </FlashPlayer>

         <Flash>Flash 8</Flash>

         <Flash>Flash MX2004</Flash>

         <Ajax>

                   <GoogleAjax>GoogleAjax1.0</GoogleAjax>

         </Ajax>

</RIA>

可以看出insertChildAfter是在指定节点之后插入新的节点。而insertChildBefore恰恰相反,在指定节点之前插入新节点。insertChildBeforeinsertChildAfter使用方式相同。如下代码所示

var flexXML:XML=<RIA>

<FlashPlayer>

                              <Flash>Flash CS3</Flash>

                              </FlashPlayer>

<Ajax>

                              <GoogleAjax>GoogleAjax1.0</GoogleAjax>

                              </Ajax>

                </RIA>

var flexXML1:XML=  <Flash>Flash 8</Flash>

var flexXML2:XML=  <Flash>Flash MX2004</Flash>

flexXML=flexXML. insertChildBefore (flexXML.FlashPlayer [0],flexXML1);    //通过指定节点位置插入新的节点

flexXML=flexXML. insertChildBefore (flexXML.FlashPlayer [0],flexXML2);    //通过指定节点位置插入新的节点

trace(flexXML.toString());

上面代码输出结果如下所示。

<RIA>

         <Flash>Flash MX2004</Flash>

         <Flash>Flash 8</Flash>

         <FlashPlayer>

                   <Flash>Flash CS3</Flash>

         </FlashPlayer>

         <Ajax>

                   <GoogleAjax>GoogleAjax1.0</GoogleAjax>

         </Ajax>

</RIA>

每个新插入的节点都在指定节点之前。通过insertChildAfterinsertChildBefore方法可以指定任意插入节点的位置。

除了上述的改变XML对象节点的方法之外,可以直接通过“.”操作符向XML对象添加节点,使用“@”操作符添加属性。如下代码所示。

var flexXML:XML=<RIA></RIA>

flexXML.Flash=”flash CS3”;                                                               //添加Flash节点

flexXML.@name=”FlashPlayer”;                                                       //添加name属性

trace(flexXML.toString());

上面代码输出如下所示。

<RIA name=”FlashPlayer”>

         <Flash>flash CS3</Flash>

</RIA>

同样,可以通过“+”和“+=”操所符构建一个XMLList对象。如下代码所示。

var flexXML:XML=<Flash>Flash MX2004</Flash>

var flexXML1:XML=<Flash>Flash 8</Flash>

var flexXML2:XML=<Flash>Flash CS3</Flash>

var flexXMLList:XMLList=flexXML+flexXML1;                                            //连接连个XML对象构建XMLlist对象

flexXMLList+=flexXML2;                                                                              //XMLList对象添加新的节点

trace(flexXMLList.toString());

上面代码输出的结果如下所示。

<Flash>Flash MX2004</Flash>

<Flash>Flash 8</Flash>

<Flash>Flash CS3</Flash>

ActionScript 3.0中,还可以通过“{}”操作符引用其他类型的数据。通过这种方式可以快速的通过已有数据构建XML对象的内容。具体使用方式如下代码所示。

var flexArray:Array=[“flash MX2004”,”flash 8”,”flash CS3”];

var flexXML:XML=new XML(“<RIA></RIA>”);

for(var i:int=0;i<flexArray.length;i++)

{

         var flexTempXML=new XML();

         flexTempXML=<Flash>{flexArray[i]}</Flash>                        //通过“{}”引用Array内容的数据循环添加节点

         flexXML.appendChild(flexTempXML);

}

trace(flexXML);

上面代码输出的内容如下所示。

<RIA>

         <Flash>flash MX2004</Flash>

         <Flash>flash 8</Flash>

         <Flash>flash CS3</Flash>

</RIA>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值