Flex新手XMLList问题 - 排序XML和XMLList [英] Flex Newbie XMLList question - Sorting XML and XMLList

查看:171
本文介绍了Flex新手XMLList问题 - 排序XML和XMLList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以对XMLList进行排序?所有的例子,我可以找到它创建一个新的XMLListCollection是这样的:

  MyXMLListCol = new XMLListCollection(MyXMLList); 

我不认为XMLListCollection在这种情况下对XMLList有任何引用,我的XMLList未排序,这是正确的吗?



我怎样才能直接排序的XMLList



所以我终于让我的搜索条件发生了变化,实际上我对此做了一个回答。
使用我从这里得到的技术:
http://freerpad.blogspot.com/2007/07/more-hierarchical-sorting-e4x-xml-for.html



<我可以想出这个:

  public function sortXMLListByAttribute(parentNode:XML,xList:XMLList,attr:String ):void {
// attr值必须是ints
var xListItems:int = xList.length();
if(xListItems!= 0){
var sortingArray:Array = new Array();
var sortAttr:Number = new Number();
for each(var item:xList中的XML){
sortAttr = Number(item.attribute(attr));
if(sortingArray.indexOf(sortAttr)== - 1){
sortingArray.push(sortAttr);

//捎回删除,只需要删除所有的localName而不接触其他localNames的项目
删除parentNode.child(item.localName())[0];
}
if(sortingArray.length> 1){
sortingArray.sort(Array.NUMERIC);
}

var sortedList:XMLList = new XMLList();
(var sortedAttr:sortArray中的数字){
for each(var item2:xList中的XML){
var tempVar:Number = Number(item2.attribute(attr));
if(tempVar == sortedAttr){
sortedList + = item2
}
}
}
for each(var item3:sortedList中的XML){
parentNode.appendChild(item3);





工作得非常快,原始的XML变量更新。我知道我可能只是为了不使用XMLListCollection而重新发明轮子,但是我认为对XML和XMLLists进行排序的能力可以是非常重要的。

Is it possible to sort an XMLList? All the examples I can find on it create a new XMLListCollection like this:

MyXMLListCol = new XMLListCollection(MyXMLList);

I don't think the XMLListCollection in this case has any reference to the XMLList so sorting it would leave my XMLList unsorted, is this correct?

How can I sort the XMLList directly?

Thanks ~Mike

解决方案

So I finally got my search terms altered enough I actually churned up an answer to this. Using the technique I got from here: http://freerpad.blogspot.com/2007/07/more-hierarchical-sorting-e4x-xml-for.html

I was able to come up with this:

public function sortXMLListByAttribute(parentNode:XML,xList:XMLList,attr:String):void{
//attr values must be ints
var xListItems:int = xList.length();
if(xListItems !=0){
    var sortingArray:Array = new Array();
    var sortAttr:Number = new Number();
    for each (var item:XML in xList){
        sortAttr = Number(item.attribute(attr));
        if(sortingArray.indexOf(sortAttr)==-1){
            sortingArray.push(sortAttr);
        }
        //piggy back the removal, just have to remove all of one localName without touching items of other localNames
        delete parentNode.child(item.localName())[0];
    }
    if( sortingArray.length > 1 ) {
        sortingArray.sort(Array.NUMERIC);
    }

    var sortedList:XMLList = new XMLList();
    for each(var sortedAttr:Number in sortingArray){
        for each (var item2:XML in xList){
            var tempVar:Number = Number(item2.attribute(attr));
            if(tempVar == sortedAttr){
                sortedList += item2
            }
        }
    }
    for each(var item3:XML in sortedList){
        parentNode.appendChild(item3);
    }
}
}

Works pretty fast and keeps my original XML variable updated. I know I may be reinventing the wheel just to not use an XMLListCollection, but I think the ability to sort XML and XMLLists can be pretty important

这篇关于Flex新手XMLList问题 - 排序XML和XMLList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆