<?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>