Руководство по actionscript. часть 3, стр. 055

Обход деревьев XML

В терминах программирования обход означает обращение к каждому узлу в структуре данных и его обработку. Обход дерева означает использование рекурсивного алгоритма для обхода узлов древовидной структуры.

В реализациях языка XML, основанных на модели DOM (например, унаследованный класс flash. xml. XMLDocument), для поиска информации программисты часто пишут собственный код, осуществляющий обход деревьев XML. Например, программа для работы с персоналом может включать код, который просматривает весь документ XML в поисках сотрудников с должностью «руководитель» или с зарплатой, находящейся в заданном интервале. Как мы уже видели в предыдущем разделе, такой пользовательский код для обхода деревьев почти не нужен в расширении Е4Х, поскольку большинство операций поиска могут быть выполнены с помощью операторов «потомок» и фильтрующего предиката расширения Е4Х. Однако бывают ситуации, в которых необходимо выполнить обход дерева даже в расширении Е4Х. К счастью, для этих целей код расширения Е4Х прост.

В расширении Е4Х мы можем использовать оператор «потомок» вместе с групповым символом свойств, чтобы получить объект XMLList, содержащий все узлы-потомки для данного элемента, как показано в следующем коде:

некийЭлемент. * II Возвращает список, содержащий все потомки // элемента некийЭлемент

Можно также использовать инструкцию for-each-in для перемещения по всем элементам объекта XMLList. Объединив эти методики вместе, мы легко обойдем любой узел в дереве XML, как показано в следующем коде:

for each (var ребенок:Ш. in некийЭлемент. *) { II обработка элемента ребенок…

}

Однако стоит отметить, что предыдущий код не в полном объеме соответствует классическому определению обхода дерева, поскольку он никогда не обращается к корневому элементу иерархии (некийЭлемент). Если корневой узел должен обрабатываться вместе с его детьми, просто временно добавьте его к другому экземпляру класса XML, как показано ниже:

var tempRoot:XML = ; tempRoot. appendChi16(некийЭлемент); for each (var ребенок\Ш. in tempRoot..*) { // Обработка элемента ребенок…

}

Рассмотрим простой пример реального обхода дерева. Предположим, что мы создаем форум, который позволяет пользователям оставлять ответы, включающие

разметку HTML. Чтобы ответы соответствовали стандарту XHTML, мы хотим, чтобы все имена тегов, найденные в ответах пользователей, преобразовывались в нижний регистр. Вот пример ответа, который включает проблематичный верхний регистр и смешанные регистры в именах тегов:

var message:XML =

HEY1 I just wanted to say that your site is so cool!!

You should Visit mine sometime.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 142
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 022
  • 16.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.16
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.37
  • 07.03.2011">Руководство по actionscript. часть 4, стр. 101
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.12
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.55
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 135
  • 05.11.2012">Gmail стал самым популярным почтовым сервисом в мире
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 013
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.101
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 012
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 070
  • 19.02.2014">О пользе массажа
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 086
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...