as3:xml加载但似乎没有强制转换为原生flash xml

时间:2009-12-27 20:31:10

标签: flex actionscript-3

我有一个通过php脚本加载一些xml数据的类。 我试图抓取格式化的xml(我已经验证格式正确),并将其填充到许多变量中。 我试试:

package utils.php
{
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;

    public class DirectoryReader extends EventDispatcher
    {
        public var fileList:XMLList;
        public var totalBytes:int;

        private var loader:URLLoader;

        public function DirectoryReader(url:String)
        {           
            var urlreq:URLRequest = new URLRequest(url);
            trace(url);

            urlreq.contentType = "text/xml";
            urlreq.method = URLRequestMethod.POST;

            loader = new URLLoader(urlreq);
            loader.addEventListener(Event.COMPLETE, completeHandler);
            loader.load(urlreq); 
        }

        protected function completeHandler(e:Event):void 
        {
                trace("seems to have worked...");
                var loaded:XML = loader.data;
                fileList = loaded.child("filelist").attribute("file");
                trace("file list: " + fileList);

                totalBytes = loaded.child("totalsize");
                trace("total size: " + totalBytes);

                dispatchEvent(new Event("directoryLoaded"));
        }

    }
}

我做了哪些明显的错误? 基本上我得到一个错误,即加载的变量无法正确传播,就好像存在类型不匹配一样。 FWIW,我的类扩展了EventDispatcher,以便我可以通知其已加载的类。我发送一个URL,包括php变量ala?和&。

谢谢, JML

1 个答案:

答案 0 :(得分:2)

实际上我认为URLRequest.contentType仅指请求标头,而不是响应。和AFAIK一样,即使你得到一个text / xml响应头,Flash也会把它当作一个String,所以你需要使用响应字符串作为它的“表达式”参数创建一个新的XML对象...

我认为这可以解决您的问题:

var loaded:XML = new XML(loader.data);