Показать сообщение отдельно
Старый 13.01.2011, 10:14
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Если массив products имеет вид, который у вас представлен на скрине, то sort и sortOn не будут работать, как вы ожидаете.
К тому же вы пытаетесь отсортировать products, а выводите значения из Prices и Name. Но это уже несущественно.

Решение без класса XPath:
Код AS1/AS2:
var products:Array = new Array();
var xmlData:XML = new XML();
xmlData.ignoreWhite = true ;
xmlData.onLoad = xmlDataOnLoad;
xmlData.load('shop.xml');
 
function xmlDataOnLoad(success:Boolean):Void  
{
	if (success) 
	{		
		var node:XMLNode = this.firstChild ;
		var total:Number = node.childNodes.length ; //количество узлов
 
		for (i = 0; i < total; i++)
		{
			//извлекаем значения атрибутов
			var n:String = node.childNodes[i].attributes['name'];
			var p:Number = parseInt(node.childNodes[i].attributes['price']);
			//вносим в массив
			products.push({name: n, price: p});
		}
 
		for (i = 0; i < products.length; i++) 
		{
			trace (products[i].price + ' - ' + products[i].name);
		}
 
		trace('-------');
 
		products.sortOn('price', Array.DESCENDING | Array.NUMERIC);
 
		for (i = 0; i < products.length; i++) 
		{
			trace (products[i].price + ' - ' + products[i].name);
		}
	}
}
Поскольку нужно "отсортировать товары по цене в порядке убывания", приводим значение атрибута "price" к числу с помощью parseInt, иначе бы сортировка велась по законам сортировки строчных значений.
__________________
Идите первым!


Последний раз редактировалось mooncar; 13.01.2011 в 11:52.