2009-11-02 36 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

相关问题