|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Чтение XML. Методы: text(), elements(), children(), nodeKind()
Всем доброго времени суток.
Есть некий XMLList: который нужно последовательно обойти, то есть после обработки "<span>str1<span>" перейти к "str2", а не к следующему span'у. Теперь собственно вопрос, как это можно реализовать? Через методы elements() и text() можно получить доступ либо к одному, либо к другому. У меня есть идея с предварительным обходом XMLList и составлением "очереди"... но она скорее всего получится неприлично громоздкой (по крайней мере в моей реализации)). Уверен, что есть очень простое решение, но голова уже мало что соображает. Прошу хотя бы намекнуть что и в каком направлении искать. Заранее благодарен. Последний раз редактировалось Elandor; 16.03.2009 в 17:54. |
|
|||||
придется постоянно проверять, есть ли у узла дочерние узлы. Т.е. вы проводите обход XML дерева, проверяете поочередно узлы (узлы их узлов и т.п.) на существование, и если они есть - проводить требуемые действия и проверять дальше. Лучше это сделать рекурсивной функцией на мой взгляд.
|
|
|||||
Modus ponens
|
__________________
Hell is the possibility of sanity |
|
|||||
скорее всего нужно проверять (nodeKind() != null). Касательно этой темы могу порекомендовать книгу "ActionScript 3.0. Сборник рецептов", она продается в многих магазинах (ну или можно поискать сканы в интернете). Там касательно вашей проблемы выделена целая глава. Там Вы так же для себя узнаете много интересных "фишек" касательно работы с XML. Написано все очень грамотно и понятно, подчерпнете много интересной информации на будущее
|
|
|||||
Modus ponens
|
>> скорее всего нужно проверять (nodeKind() != null).
Надеюсь, что в этой книге ничего подобного не написано... 1. проверять на нестрогое неравенство с null - это уже абсурдно само по себе. 2. nodeKind() не может возвращать null ни при каких обстоятельствах... вы хоть в мануал загляните, перед тем, как советовать.
__________________
Hell is the possibility of sanity |
|
|||||
Согласен, это абсурд полнейший и в книге Вы такого не найдете. На самом деле я опечатался, параллельно думал о hasSimpleContent(), hasComplexContent() и прочих методах, в рез-те получился такой бред. Сейчас протестирую один подход, если получится, опубликую рез-т.
Добавлено через 40 минут private function getData(node:XML):void { for (var i:int = 0; i < node.children().length(); i++) { trace(node.children()[i]); } } |
|
|||||
Ночью таки дописал вариант с "очередью". Днём дошло, что есть ещё children() - быстренько исправил код, пока никто не заметил
А вот с nodeKind() ни разу ещё работать не приходилось, буду знать. serenkiy, wvxvw Ещё раз спасибо. P.S.: если имелась в виду книжка за авторством Лотта, Шалла и Питерса, то есть такая. Иногда к ней обращаюсь, если в хелпе чего не понятно) Подправил название темы. |
Часовой пояс GMT +4, время: 16:28. |
|
« Предыдущая тема | Следующая тема » |
Теги |
elements() , text() , xml |
|
|