2012-05-27 32 views
1

我的Flex應用程序將服務運行到從我的數據庫中提取數據的php頁面,然後以XML格式構造結果。我在任何函數之外創建了一個名爲testList的新XMLList,然後當結果返回時(它們首先以包含所有XML代碼的單個字符串的形式出現)以下代碼將它轉換爲XML,然後附加到我的testList:Adob​​e Flex:無法將XMLList轉換爲mx.collections.IList

var s:String = event.result as String;
var xml:XML = new XML(s);
testList = xml.user;

數據在一個函數中使用,那麼它也傳遞給我的一個組成部分,在這裏我嘗試在列表中顯示(與testList爲數據提供程序)XMLList中,我得到了以下錯誤:

TypeError:錯誤#1034:類型強制失敗:無法將XMLList @ 68ffa01轉換爲mx.collections.IList。

我有一種感覺,這可能是一個noob錯誤,但任何幫助表示讚賞。

回答

4

E4X表達式返回匹配XML的列表。 xml.user爲您提供了所有user元素的XMLList。您可以使用XMLListCollection(實現IList)來包裝結果,以便將其用作數據提供者。

var xml:XML = new XML(event.result as String); 
var list:IList = new XMLListCollection(xml.user); 

另一種選擇是循環通過XMLList並將其添加到數組或任何您需要的集合。如果你肯定知道只有一個用戶,你可以這樣做,而不是:

var user:XML = xml.user[0]; 
+0

我做了你所說的,現在我有錯誤: 'TypeError:Error#1034:Type Coercion failed:can not convert mx.collections :: XMLListCollection @ 8396239 to XMLList.' – user1077544

+2

請注意,您使用XMLList作爲XMLListCollection的源代碼。你永遠不應該把你的XMLListCollection放入一個變量類型的XMLList中。 –

+0

謝謝takteek和艾米。我意識到在我的組件中,我仍然試圖使用XMLList而不是XMLListCollection。它現在有效。 – user1077544

1

你可能使用此模塊,或者你已經加載的SWF中,並裝載有不同的applicationDomain比父級和其他一些加載的模塊或swf也使用XMLList或XMLListCollection。如果沒有關於體系結構的更多詳細信息,我只能告訴您確保父應用程序域在子任務之前加載到XMLList和/或XMLListCollection中,或者確保它們都共享父級的applicationDomain。