AS3中易混淆的XML,XMLList转换

 <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
 <![CDATA[
  import mx.collections.XMLListCollection;
  import mx.controls.Alert;
  private function init():void{
   var a:XML=<cart>
    <items>
     <item>one</item>
     <item>two</item>
     <item>three</item>
    </items>
    </cart>;
   Alert.show(a.toString(),'a');
   Alert.show(a.toXMLString(),'a.toXMLString()');
//以上两句输出完全一样   
   var b:XML = new XML("<cart><items><item>one</item><item>two</item></items></cart>");
//上句使用XML构造函数来创建一个XML对象,它接受一个String对象作为参数,其他类型的对象将先被转换成String后再处理。
   var c:String="<cart><items><item>one</item><item>two</item><item></item></items></cart>";
   var d:XML = XML(c);
//上句则是使用XML()转换函数来将其他对象转换成XML对象
   Alert.show(b.toString(),'b');
   Alert.show(c.toString(),'c');
   Alert.show(d.toString(),'d');
//可是d对象与c对象引用的并不是同一个实例
   
   var e:XML = XML(a);
   e.items.item[0]="four";
   Alert.show(a.toString(),'a');
   Alert.show(e.toString(),'e');
//但在这时e和a却是指向同一个对象的引用

   var f:XMLList = XMLList(a);
//同样有XMLList()转换函数

   Alert.show(a.cart.toString(),'a.cart');
//上句输出为空,因为a即表示了XML的根元素,a.cart想表示a的cart子元素,但没有
   
   
   Alert.show(a.items.toString(),'a.items');
//用XML的点操作符返回的是XMLList对象,a.items是一个XMLList对象,但
//对于只包含一个 XML 元素的 XMLList 对象,可以使用 XML 类的所有属性和方法,因为包含一个 XML 元素的 XMLList 被视为等同于 XML 对象。  

   var o:XMLListCollection ;
//   o = XMLListCollection(a.items);
//执行上句,会出现运行时错误:强制转换类型失败:无法将 XMLList@6f4e2911 转换为 mx.collections.XMLListCollection。
   o = new XMLListCollection(a.items);
   
   Alert.show(o.toString(),'o');
   }
   
   
//如果字符串中的 XML 数据格式有误(例如缺少结束标签),则会出现运行时错误。   
// 对于只包含一个 XML 元素的 XMLList 对象,可以使用 XML 类的所有属性和方法,因为包含一个 XML 元素的 XMLList 被视为等同于 XML 对象。  
   
 ]]>
</mx:Script>

 
</mx:Application>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值