yaonai2003的专栏

不胜人生一场醉

关于加载外部xml文件转换成xml时出错!

错误提示:强制转换类型失败:无法将“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>

 

阅读更多
个人分类: flex/flash
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

关于加载外部xml文件转换成xml时出错!

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭