Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Перебор всех элементов в XML (http://www.flasher.ru/forum/showthread.php?t=110920)

Shinoby 11.04.2008 16:32

Перебор всех элементов в XML
 
Когда то видел пример, простой цикл перебирал все элементы XML. Но найти уже не могу. Мне нужно получить значения attributes из узла XML - nodeName которого известно заранее.
Так понимаю что это будет не единственный поиск и видимо нужно перебрать все в цикле паралельно выдергивая и обрабатывая найденные узлы имеющие верные nodeName.

На этом форуме тоже поискал. Нашел одну тему но не совсем подходящую. Да и нет на форуме такой темы как я сделал сейчас - может потом кому то проще будет найти...

qazwsx 11.04.2008 16:51

Код:

for(node = XMLNode; node!=undefined; node.nextSibling){
if(node.nodeName == "blablabla"){
}
}


Shinoby 11.04.2008 16:56

У меня цикл уходит в небытие и среда разработки предлагает его кильнуть постоянно. Хотя имя 100% присутствует. Пытаюсь трейсом увидеть что к чему - даже ничего не выдаёт... Просто вылетает.

qazwsx 11.04.2008 17:27

600 строк это не так много. А под XMLNode я имелл виду просто XML разницы нет >_>

Shinoby 11.04.2008 17:36

Я вот чего не пойму. Вот куски кода:

Код:

book_xml3 = new XML ();
book_xml3.ignoreWhite = true;
book_xml3.onLoad = function (sucess) {
        if (sucess) {
                ParseInf (book_xml3);
        }
};

book_xml3.load ("02.xml");

далее в функции ParseInf я подставляю переданное значение в цикл и... Он уходит в транс.

Код:

        for(my_node = book_xml3; my_node!=undefined; my_node.nextSibling){
                if(my_node.nodeName == "characterInfo"){
                        break;
                }
        }

Причём book_xml3 хранит структуру ХМЛ 100%, я в этом уверен, так как чуть выше по коду проверяю это тупо "book_xml3.childNodes[0].childNodes[0].childNodes[0].attributes.name", а далее структура ХМЛ может меняться и вот тут мне нужен цикл для поиска.

Fernando Costa 11.04.2008 18:21

ключевое слово - рекурсия

qazwsx 11.04.2008 19:19

my_node = my_node.nextSibling
Что значит хмл может менятся?

chingachgoog 11.04.2008 20:58

плюс еще поправочка :)
более правильно (чисто формально) my_node!=null

а вот рекурсию в xml не советовал бы - слишком велика вероятность наткнуться на флешовое ограничение по ней.

Shinoby 14.04.2008 10:06

Цитата:

Сообщение от qazwsx
my_node = my_node.nextSibling
Что значит хмл может менятся?

Ну хмл генерю не я и ничто не мешает ему в следующий раз иметь иную структуру. но он всегда будет соответствовать хмл "принципу" и парситься должен без проблем.


Цитата:

Сообщение от chingachgoog
плюс еще поправочка :)
более правильно (чисто формально) my_node!=null

а вот рекурсию в xml не советовал бы - слишком велика вероятность наткнуться на флешовое ограничение по ней.

Несмотря на то, что хмл не я генерю, но тот объем данных что будет в нем не должен заставить в случае рекурсии нарваться на какие либо ограничения. Сказав на вскидку, я предполагаю что сам ХМЛ уместится на 2-3 экранах с прокруткой =) (это не пол мегабайта текста - факт) без 10 колений вложенности точно.

Так. Понедельник блин...
Код:

        for(my_node = book_xml3; my_node!=null; my_node = my_node.nextSibling){
                if(my_node.nodeName == "characterInfo"){
                        break;
                }

        trace(my_node.nodeName);
        }

Так тоже ничего. Трейс позвращает null. Я чего то не пойму, но не пойму чего именно. То что в my_node скидывается ХМЛ я уверен. Проверил засунув в цикл "my_node.childNodes[0].childNodes[0].childNodes[0].attributes.name" и он вернул мне правильное значение.

udaaff 14.04.2008 10:44

Цитата:

Сообщение от chingachgoog
а вот рекурсию в xml не советовал бы - слишком велика вероятность наткнуться на флешовое ограничение по ней.

Ты часто видел xml с 256 уровнями вложенности?


Часовой пояс GMT +4, время: 03:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.