关闭

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

标签: xmlfunctionstringimportlayoutobject
2024人阅读 评论(0) 收藏 举报
分类:

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

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:240137次
    • 积分:2771
    • 等级:
    • 排名:第13396名
    • 原创:20篇
    • 转载:116篇
    • 译文:0篇
    • 评论:22条
    最新评论