ActionScript - сортировка файла XML с помощью Array.sortOn ()? - PullRequest
0 голосов
/ 10 ноября 2010

Мне нужно отсортировать большой XML-файл, и я читал, что размещение каждого элемента в массиве - это способ сортировки данных с помощью метода Array sortOn ().

Я обеспокоено скорости.возможно, сохранение их в Vector. вместо Array предложит небольшое увеличение скорости или нет, но является ли этот подход лучшим способом сортировки данных XML?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

На самом деле я вижу два решения:

1 / Вы загружаете статический XML-файл и, следовательно, можете выполнять сортировку вручную.

2 / Вы загружаете динамический XML и для увеличения скорости серверная часть может обеспечить сортировку (легко в PHP). я думаю, что это лучше.

Таким образом, в обоих случаях вам нужно один раз проанализировать xml, сохранить данные (Vector, Value Object) и очистить память, уничтожив ссылку на ваш xml.

Если вы хотите выполнить сортировку на стороне Flash, вам нужно создать свою собственную функцию, и использование метода sortOn кажется неизбежным.

1 голос
/ 11 ноября 2010

@ TheDarklnl1978 Вот часть исходного кода из fl.data.DataProvider, преобразующего XML в массив (находится в каталоге установки Flash CS5):

var xml:XML = obj as XML;
retArr = [];
var nodes:XMLList = xml.*;
for each (var node:XML in nodes) {
    var obj:Object = {};
    var attrs:XMLList = node.attributes();
    for each (var attr:XML in attrs) {
        obj[attr.localName()] = attr.toString();
    }
    var propNodes:XMLList = node.*;
for each (var propNode:XML in propNodes) {
        if (propNode.hasSimpleContent()) {
            obj[propNode.localName()] = propNode.toString();
        }
    }
    retArr.push(obj);
}
return retArr;
0 голосов
/ 10 ноября 2010

Итак, чтобы ответить на мой собственный вопрос, я считаю, что создание объекта DataProvider с XML - лучшее решение.

назначение XML для DataProvider не требует настройки и повторения через цикл, хотя может быть внутренний цикл, происходящий за кулисами. Мне было бы интересно узнать, если это так или нет, поэтому, пожалуйста, оставьте комментарий, если вы знаете.

Кроме того, объекты DataProvider также поддерживают сортировку, поиск и гибкость для создания списков, сеток данных и т. Д.

...