【问题标题】:Adobe Flex: Cannot Convert XMLList to mx.collections.IListAdobe Flex:无法将 XMLList 转换为 mx.collections.IList
【发布时间】:2012-06-02 09:31:50
【问题描述】:

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

var s:String = event.result as String;
var xml:XML = 新的 XML;
testList = xml.user;

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

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

我觉得这可能是一个菜鸟错误,但感谢任何帮助。

【问题讨论】:

    标签: xml apache-flex


    【解决方案1】:

    E4X 表达式返回匹配 XML 的列表。 xml.user 为您提供所有 user 元素的 XMLList。您可以使用实现IListXMLListCollection 来包装结果,以便将其用作数据提供者。

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

    另一种选择是循环遍历 XMLList 并将其添加到数组或您需要的任何集合中。如果您确定只有一个用户,您可以这样做:

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

    【讨论】:

    • 我按照你说的做了,现在出现错误:TypeError: Error #1034: Type Coercion failed: cannot convert mx.collections::XMLListCollection@8396239 to XMLList.
    • 请注意,您使用 XMLList 作为 XMLListCollection 的源。你永远不应该把你的 XMLListCollection 放到一个变量类型的 XMLList 中。
    • 感谢 takteek 和 Amy。我意识到在我的组件中我仍在尝试使用 XMLList 而不是 XMLListCollection。现在可以了。
    • @takteek,我有类似的问题,请你看看我的问题stackoverflow.com/questions/14331106/…谢谢
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多