Flex新手XMLList问题 - 排序XML和XMLList [英] Flex Newbie XMLList question - Sorting XML and 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屋!