2009-12-27 45 views
0

我有一個類,通過php腳本加載一些xml數據。 我想抓住格式化的XML(我已驗證是格式正確),並將其填入許多變量。 我嘗試:as3:xml加載但似乎沒有被強制爲本機flash 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

+0

你能提供你如何使用你的類更多的代碼... – Patrick 2009-12-27 21:25:45

+0

是的,我更新的代碼。 – jml 2009-12-27 21:58:49

+0

作爲一個無關的提示,這個: loaded.child(「filelist」)。attribute(「file」); 與此相同: loaded.filelist。@ file ;) – Cay 2009-12-28 01:12:03

回答

2

其實我覺得URLRequest.contentType僅指請求頭,不響應。而AFAIK,即使你得到一個text/xml響應頭,Flash確實會把它當作一個字符串,所以你需要使用響應字符串作爲它的「表達式」參數來創建一個新的XML對象...

我認爲這將解決您的問題:

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

BAM!就這樣。 非常感謝......我並沒有真正看到我需要初始化新的XML實例的事實。 非常感謝,礁。 – jml 2009-12-28 02:58:20

+0

沿着這些線,有什麼像whatIsTypeOf(x)? – jml 2009-12-28 17:28:05

+0

是的,檢查flash.utils包... describeType()會給你一個xml與對象的整個描述;還有其他一些方法來檢索類名稱等...另外,爲了檢查類型兼容性,運算符「是」是要走的路;) – Cay 2010-01-02 21:37:17