对于XML类型的转换,首先可以在进行从XML对象向XMLList对象的转换。XML对象实际上也是一个只有一个节点的XMLList对象。可以通过定义变量的方式直接完成转换。从XML的一部分转换为XMLList的代码如下所示。
var flexXML:XML=
<RIA>
<FlashPlayer>
<Flash>
<Name>Flash CS3</Name><Version>9</Version>
</Flash>
<Flash>
<Name>Flash 8</Name><Version>8</Version>
</Flash>
<Flash>
<Name>Flash 2004MX</Name><Version>7</Version>
</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
</RIA>
var flexXMLList:XMLList= flexXML.child("FlashPlayer").child("Flash");
trace(flexXMLList.toString());
上面的代码中,将flexXML对象中FlashPlayer节点下的所有Flash节点形成一个XMLList对象。上面的代码输出结果如下所示。
<Flash>
<Name>Flash CS3</Name>
<Version>9</Version>
</Flash>
<Flash>
<Name>Flash 8</Name>
<Version>8</Version>
</Flash>
<Flash>
<Name>Flash 2004MX</Name>
<Version>7</Version>
</Flash>
同样,也可以采用直接赋值的方式将一个XMLList对象的元素转换为XML对象。在上面的代码基础上进行转化,代码如下所示。
var flexXMLm:XML=flexXMLList[0];
trace(flexXMLm);
这样就把flexXMLList中的第一个节点转换为一个XML对象,输出结果如下所示。
<Flash>
<Name>Flash CS3</Name>
<Version>9</Version>
</Flash>
使用这种对象级别的转换可以让原始数据保持不变,而且操作XML和XMLList对象也不会干扰到原数据。这样,在保证原始数据的完整性基础上,方便得进行数据的访问修改。
XML以及XMLList对象都可以转换为String类型的内容。输出的内容就是拥有XML格式要求的一组字符串。而当使用String类型的内容转换为XML对象的时候。一定要保证字符串是标准的XML格式,否则在运行时会抛出一个错误。
同样对于XML内容的处理完全可以使用字符串的方式进行处理。下面的代码展示了对XML对象的内容采用字符串处理的方法。
var flexXML:XML =
<RIA>
<FlashPlayer>
<Flash>
<Name>Flash CS3</Name><Version>9</Version><price>1000</price>
</Flash>
<Flash>
<Name>Flash 8</Name><Version>8</Version><price>1000</price>
</Flash>
<Flash>
<Name>Flash 2004MX</Name><Version>7</Version><price>1000</price>
</Flash>
</FlashPlayer>
</RIA>
var Count:XML = <total>0</total>;
flexXML.appendChild(Count);
for each (var Flash:XML in flexXML.FlashPlayer.Flash)
{
flexXML.total.children()[0] = Number(flexXML.total.children()[0])+ Number(Flash.price.children()[0]);
}
trace(flexXML.total); //输出3000
上面的代码通过对String数据的强制转换,让整个XML文档中相关的内容参与到计算当中。这种处理数据的方式使得开发Flex应用变得简单快捷。