2009-11-02 53 views
0

我通過HttpService在Flex中檢索XML數據。我將HttpService實例上的resultFormat屬性設置爲HTTPService.RESULT_FORMAT_OBJECT。結果包含類似這樣的數據:如何讓Flex從XML數據創建一個元素的數組?

<!-- ... --> 
<children> 
    <item><!-- ... --></item> 
    <item><!-- ... --></item> 
    <!-- ... --> 
<children> 
<!-- ... --> 

我得到一個名爲項數組元素下的孩子時,有不止一個item兄弟。如果只有一個,轉換不能將其與標量區分開來。

我需要更改以使Flex將所有item元素轉換爲包含0個或更多元素的數組?

我需要做些什麼來獲得陣列成員children,完全放棄item包裝?

XML由服務器端的Struts生成。我總是可以選擇更改文檔的結構,但現在我對使用Flex可以做什麼感興趣。

回答

0

item對象應該是XMLList是否有一個或多個條目。 (如果沒有,則將爲undefined)。

如果只有一個元素,則可以使用XML方法,但這只是一個方便。請參閱XMLList documentation

我還建議由Mike Morearty對此blog entry發表評論5(緩存版本,因爲該網站似乎無法訪問)。

+0

這種聯繫是好的。那麼,基本的東西就是使用e4x的結果,對吧? – 2009-11-03 12:01:47

-1

試試這個:

try { 
    for (var i:int = 0; /* loop forever till error is thrown */; i++) { 
     var j:String = String(children.item[ i ].SomeOtherAttribute); // if its a string 
    } 
} catch (re:RangeError) { 
} 
+0

我不明白。該代碼應該做什麼?另外,讓我對似乎是輕微濫用例外的東西皺眉。 (如果我可以做項目[我],確定有item.length用於循環條件,不是嗎?) – 2009-11-03 11:58:34

+0

我在構建原型時遇到了此問題。長度屬性不在那裏。幾分鐘後,我想到了這個解決方案,它工作得很好。我從來沒有說過「這是完美的解決方案」,只是「試試這個」。我需要儘快解決這個問題。我不能來這裏,問一個問題,然後等待答案。因此,我使用了對我有用的東西。 如果原型和其他人喜歡它,那麼我可以考慮讓它的生產準備就緒,然後我可以用更好的東西替代這個代碼。直到那時,我看到沒有必要擔心純度。 – sc45 2009-11-03 19:02:25

相關問題