代码之家  ›  专栏  ›  技术社区  ›  Chunky Chunk

actionscript-使用array.sorton()对XML文件进行排序?

  •  0
  • Chunky Chunk  · 技术社区  · 14 年前

    我需要对一个大型XML文件进行排序,我一直在阅读,将每个元素放入一个数组是使用数组的sorton()方法对数据进行排序的方法。

    我关心的是速度。也许将它们存储到矢量中。<xml>而不是数组将提供速度的轻微提高,或者不会,但这种方法是对XML数据进行排序的最佳方法吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   kero_zen    14 年前

    实际上,我看到了两个解决方案:

    1/加载静态XML文件,因此可以手动进行排序。

    2/您加载一个动态XML,为了提高速度,服务器端可以提供排序(在PHP中很容易)。 我认为这是更好的办法。

    所以在这两种情况下,您必须解析一次XML,存储数据(向量、值对象)并通过销毁对XML的引用来清除内存。

    如果你想在flash端进行排序,你必须创建自己的函数,并且使用sort on方法似乎是不可避免的。

        2
  •  1
  •   OXMO456    14 年前

    @darklnl1978是fl.data.dataprovider的源代码的一部分,用于转换数组中的XML(可在flash cs5安装目录中找到):

    var xml:XML = obj as XML;
    retArr = [];
    var nodes:XMLList = xml.*;
    for each (var node:XML in nodes) {
        var obj:Object = {};
        var attrs:XMLList = node.attributes();
        for each (var attr:XML in attrs) {
            obj[attr.localName()] = attr.toString();
        }
        var propNodes:XMLList = node.*;
    for each (var propNode:XML in propNodes) {
            if (propNode.hasSimpleContent()) {
                obj[propNode.localName()] = propNode.toString();
            }
        }
        retArr.push(obj);
    }
    return retArr;
    
        3
  •  0
  •   Chunky Chunk    14 年前

    因此,为了回答我自己的问题,我相信用XML创建一个数据提供者对象是最好的解决方案。

    将XML分配给数据提供程序不需要设置和通过循环迭代,尽管在后台可能会发生内部循环。我很想知道它是不是,所以如果你知道,请留下评论。

    此外,数据提供程序对象还支持排序、检索和灵活地创建列表、数据网格等。