![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Обычный вариант с рекурсией:
Можно ли, как-то, это обернуть в while, что бы можно было внутри какой-либо функции пройтись по всем элементам. А то сейчас приходиться отдельную функцию заводить... Сообщение отредактировал RazrFalcon - 13.4.2013, 23:35 |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
RazrFalcon, node.nextSibling(); находит соседний тег , таким образом ты перебираешь теги одного уровня в текущей "области видимости". Каждый тег помещаешь в стек. Новая итерация извлекает элемент и идёт уже по его чайлдам. Понимаешь фишку ? Поэтому в начале работы алгоритма важно инициализировать стек элементами первого уровня - ещё перед заходом в основной цикл перебора стека
кстати, nextSibling() без указания имени ищет любой следующий тег этого же уровня (скорее всего тег будет тот, что идёт в реальном тексте XML , но на это не стоит полагаться, мне кажется - не знаю, что на этот счёт говорит стандарт. Я всегда предполагаю, что порядок выбора может быть случайным) если указать имя предыдущего элемента, найдётся элемент с таким же именем:
хотя, в твоём случае, с неизвестным контентом, это, наверное, не особо пригодится |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 25.4.2025, 22:00 |