PDA

Просмотр полной версии : Обход дерева XML и removeNode


Kinsler
23.03.2006, 11:34
Трабл:
есть дерево XML с достаточно сложной структурой
многоуровневой, нужные данные обходя с помощью firstChild и nextSibling достаються достачтоно спокойно, но
я так понимаю что памят то будет жраться в зависимсоти от объема загруженного файла - а это очень нехорошо.
Если я удалю с помощью removeNode определенные узлы это повлияет на объем занятой памяти или нет?
И еще на уровне которыый мне нужен есть 1 узел в котором еще куча узлов, они мне и нужны, а перед ним несколько ненужных узлов как их нормально удалить?
т.е. все сразу
а не по одному?

Samodelkin
23.03.2006, 12:32
Делал что-то подобное в 7, удаление узлов на память не влияет... Хотя лучше проверь а то может я что-то не правильно делал? Проблем с обходом не возникало все делалось очень быстро, даже при больших объемах, так что может тебе это вовсе не нужно.

Kinsler
23.03.2006, 12:35
я что-то просечь вообще не могу про эту память
флешка сама ч-то то по разному жрет даже ничего не меняя
дело то в том что я работаю с одни файлом
а будут еще и другие тойже структуры но с большим кол-вом узлов

ненужные узлы поудалял в цикле с этим все ок
но вот еще вопрос - можно ли удалить узлы по их имени?
т.е. все, что встречаються в документе?

Samodelkin
23.03.2006, 13:09
Он память не очищает, даже если делете сделать, а если просто загружать все XML в один?
по типу
var Url:String
Load = function (Url:String) {
var doc:XML = new XML();
doc.load(Url);
};
Оповещай о ходе эксперемента самому интересно.
Удалить узлы по имени, а в чем там проблема?

Kinsler
23.03.2006, 13:31
у меня и есть один - файл - просто он приличный по размеру и там много лишнего для моих целей
менять его нельзя - он еще и для других целей служит.
Итак эксперимент показал:
запущенный swf без дилита лишнего из xml с дальнейшей его обрабботкой:
6460 Kb
запущенный swf с дилитом лишнего из xml с дальнейшей его обрабботкой:
6336
причем удаляеться приблизительно пятая часть файла.....

вроде как работает, в остальном код ничем практически не отличаеться...

Homo Sapiens
23.03.2006, 18:09
При загрузке xml будет создано полное дерево документа, то есть будет занята определённая часть памяти. Смысл после этого удалять узлы, если дерево уже создано? Твой экземпляр класса XML настолько глобален, что оно будет жить на протяжении всего фильма?

Кроме того, когда ты удаляешь узел, ты помечаешь его как неиспользуемый и только через определённый промежуток времени память будет очищена сборщиком мусора.

Kinsler
23.03.2006, 18:10
да, он живет на протяжении всего фильма
с памятью примерно ясно, я что-то в этом роде и думал.