AS3按属性对XML文件排序(数字)
我正在尝试按属性对AS3中的XML文档进行排序。我有一个函数用于编写:AS3按属性对XML文件排序(数字),xml,actionscript-3,Xml,Actionscript 3,我正在尝试按属性对AS3中的XML文档进行排序。我有一个函数用于编写: public static function sortXMLByAttribute($xml:XML,$attribute:String,$options:Object=null,$copy:Boolean = false):XML { var xmlArray:Array = new Array(); var item:XML; for each
public static function sortXMLByAttribute($xml:XML,$attribute:String,$options:Object=null,$copy:Boolean = false):XML
{
var xmlArray:Array = new Array();
var item:XML;
for each(item in $xml.children())
{
var object:Object = {data:item, order:item.attribute($attribute)};
xmlArray.push(object);
}
//sort using the power of Array.sortOn()
xmlArray.sortOn('order',$options);
//create a new XMLList with sorted XML
var sortedXmlList:XMLList = new XMLList();
var xmlObject:Object;
for each(xmlObject in xmlArray )
{
sortedXmlList += xmlObject.data;
}
if($copy)
{
//don't modify original
return $xml.copy().setChildren(sortedXmlList);
}
else
{
//original modified
return $xml.setChildren(sortedXmlList);
}
}
由于某些原因,这并不能根据我使用的属性正确地更改对象的顺序
这里是它被称为:
trace(this.pActiveItemXML);
trace(sortXMLByAttribute(this.pActiveItemXML, 'quantity', Array.DESCENDING | Array.NUMERIC, true));
这是第一个和第二个跟踪的跟踪语句。您可以看到它正在改变它们的顺序,但不是以“数量”的数字顺序:
跟踪1:
<name>My Room</name>
<object>
<type>Table</type>
<id>mc_table001</id>
<library>mc_table001</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
<object>
<type>Pillow</type>
<id>cushion001</id>
<library>cushion_group01</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
<object>
<type>Pillow</type>
<id>cushion002</id>
<library>cushion_group01</library>
<ondisplay>1</ondisplay>
<quantity>3</quantity>
</object>
<object>
<type>Lamp</type>
<id>lamp001</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>3</quantity>
</object>
<object>
<type>Lamp</type>
<id>lamp002</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>2</quantity>
</object>
<object>
<type>Lamp</type>
<id>lamp003</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
</wardrobe>
跟踪2:
<object>
<type>Pillow</type>
<id>cushion002</id>
<library>cushion_group01</library>
<ondisplay>1</ondisplay>
<quantity>3</quantity>
</object>
<object>
<type>Table</type>
<id>mc_table001</id>
<library>mc_table001</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
<object>
<type>Pillow</type>
<id>cushion001</id>
<library>cushion_group01</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
<name>My Room</name>
<object>
<type>Lamp</type>
<id>lamp001</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>3</quantity>
</object>
<object>
<type>Lamp</type>
<id>lamp002</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>2</quantity>
</object>
<object>
<type>Lamp</type>
<id>lamp003</id>
<library>lamp_group01</library>
<ondisplay>1</ondisplay>
<quantity>4</quantity>
</object>
</wardrobe>
如果有人能告诉我哪里出了问题,我将不胜感激。你想按数量排序吗?在你的例子中,数量不总是5吗?我的错误,错误的部分…我现在编辑了。