错误提示:强制转换类型失败:无法将“XXXX”转换为xml;
解决:event.target.data 它不是XML类型的 所以使用as运算符后得到的是null。
XML(event.target.data); 这句因为把event.target.data 做了类型转换,转换后会把 event.target.data 按照XML的格式转成XML类型的变量。
as运算符判断数据类型正确后才按这个数据类型返回,所以 event.target.data 不为XML的时候就返回null了。
trace(event.target.data is XML)为false,trace(typeof(event.target.data))输出的是String。
源代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.managers.CursorManager;
private var loader:URLLoader = new URLLoader();
private function initApp():void
{
var url:String = "assets/sports.xml";
var request:URLRequest = new URLRequest("assets/sports.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE,completeHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
CursorManager.setBusyCursor();
}
private function completeHandler(event:Event):void
{
CursorManager.removeBusyCursor();
//trace(event.target.data);
var myXML:XML = XML(event.target.data); //如果是 var myXML:XML = event.target.data;就会出现上面的错误提示
//var myXML:XML = event.target.data as XML;则得到的myXML为null;
trace(myXML)
parseRSS(myXML);
}
private function securityErrorHandler(event:SecurityErrorEvent):void
{
trace("securityErrorHandler");
}
private function ioErrorHandler(event:IOErrorEvent):void
{
trace("ioErrorHandler");
}
private function parseRSS(xml:XML):void
{
//trace(xml);
return;
var info:XML = xml;
var items:ArrayCollection = new ArrayCollection();
for(var i:String in info..item)
{
var obj:Object = new Object();
var node:XML = info..item[i];
obj.title = node.title;
obj.link = node.link;
obj.pubData = node.pubData;
obj.description = node.description;
items.addItem(obj);
}
newsList.labelField = "title";
newsList.dataProvider = items;
}
private function showNews():void
{
}
]]>
</mx:Script>
<mx:Panel x="10" y="0" width="400" height="360" layout="absolute" title="sina news">
<mx:VDividedBox width="100%" height="100%">
<mx:List id="newsList" width="100%" change="showNews()"/>
<mx:TextArea id="news_txt" width="100%" height="137"/>
</mx:VDividedBox>
</mx:Panel>
</mx:Application>
sports.xml源文件:
<items>
<item>
<title>在一个复古当道的时代你如何穿戴搭配</title>
<link>http://blog.sina.cn/u/4asdfsfsdv</link>
<pubData>Wed, 23 May 2007 07:07:45 GMT</pubData>
<description>十分十分十分十分的十分</description>
</item>
</items>