1

我的 Flex 应用程序对 php 页面运行一项服务,该页面从我的数据库中提取数据,然后以 XML 格式构建结果。我创建了一个testList在任何函数之外调用的新 XMLList,然后当结果返回时(它们首先以包含所有 XML 代码的单个字符串的形式出现)我有以下代码将其转换为 XML,然后附加到我的 testList :

var s:String = event.result as String;
var xml:XML = 新的 XML;
测试列表 = xml.user;

数据在一个函数中使用,然后它也被传递给我的一个组件,在那里我尝试在列表中显示 XMLList(使用 testList 作为 dataProvider),我收到以下错误:

TypeError:错误 #1034:类型强制失败:无法将 XMLList@68ffa01 转换为 mx.collections.IList。

我有一种感觉,这可能是一个菜鸟错误,但感谢您提供任何帮助。

4

2 回答 2

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];
于 2012-05-27T22:51:02.187 回答
1

您可能在您已加载的模块或 swf 中使用它,并且加载程序具有与父级不同的 applicationDomain,并且某些其他加载的模块或 swf 也在使用 XMLList 或 XMLListCollection。如果没有关于您的体系结构的更多详细信息,我只能告诉您确保父 applicationDomain 在任何一个孩子之前加载到 XMLList 和/或 XMLListCollection 中,或者确保它们都共享父 applicationDomain。

于 2012-05-28T01:53:53.360 回答