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

我正在尝试按属性对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(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吗?我的错误,错误的部分…我现在编辑了。