actionscript3 -在AS3中,您如何根据其中一个节点中的数字信息排序读取的xml数据



在我的xml中,我的一个节点反映时间。时间以分、秒、毫秒为单位。我想创建一个包含10个xml节点的列表,这些节点具有最短或最快的时间(即最少的数量)。例如,列表包含20个条目。最高的时间是00:09 .9。最低或最快的是00:23。其他数字在中间。我怎样才能得到最快的10个条目的列表呢?

Example XML
----------
<users>
<user>
<id>6546543654</id>
<time>00:06.9</time>
</user>
</users>

一种方法是不直接处理XML。

XML是一种序列化的数据格式,但您正在寻找功能。

基于列表创建对象,并使用适当的类(提示:Date),使您可以轻松地比较对象。然后对它们进行排序(或您想做的任何事情)并将它们写回XML。

以毫秒为单位更好地节省比较时间。要显示时间,您可以对其进行格式化。

用时间筛选xmllist。迭代它并将每个项压入数组。然后对数组进行排序。然后对这个数组做任何你想做的事。一个小例子:

var xml:XML = 
<users>
    <user>
        <id>6546543654</id>
        <time>6900</time>
    </user>
    <user>
        <id>6546543655</id>
        <time>7000</time>
    </user>
    <user>
        <id>6546543656</id>
        <time>3000</time>
    </user>
    <user>
        <id>6546543657</id>
        <time>10000</time>
    </user>
</users>;
function parseIntoArray(xml:XML):Array{
    var arr:Array = []; 
    for each(var item:XML in xml.children()){
        arr.push({id:item.id, time:item.time});
    }
    return arr;
}
function printArray(arr:Array):void{
    for(var i:int=0;i<arr.length;i++){
        trace(arr[i].id, arr[i].time);
    }
}
var dataArray:Array = parseIntoArray(xml) ;
printArray(dataArray);  
dataArray.sortOn("time", Array.NUMERIC );
printArray(dataArray);

最新更新