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

В двух предыдущих примерах элемент ошибочно считается ребенком объекта, на который ссылается переменная novel, хотя это не так. Как обращаться к элементам-детям, мы рассмотрим в следующем разделе.

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

Листинг 18.3. Пользовательский метод для обращения к корневому узлу

// Возвращает корневой узел иерархии XML из любого заданного ребенка public function getRoot (chi1dNode:XML):XML { var parentNode:XML = chi1dNode. parent( ); if (parentNode!= null) {

return getRoot(parentNode); } else { return chi1dNode;

}

}

// Применение: getRoot(некийРебенок);

Обращение к узлам-детям

Для обращения к экземпляру класса XMLList, представляющего узлы-детей элемента (элемент В на рис. 18.2), мы используем метод экземпляра children ( ) класса XML, не принимающего никаких аргументов. Например:

novel. children( ) // Возвращает объект XMLList, представляющий узлы-детей // элемента

В качестве альтернативы мы можем обратиться к узлам-детям элемента с помощью более удобного группового символа свойств (*) расширения Е4Х. Например:

novel.* // Также возвращает объект XMLList, представляющий // узлы-детей элемента

Для обращения к определенному ребенку в объекте XMLList мы используем уже знакомый оператор доступа к элементу массива — [ ]. Например, чтобы обратиться ко второму ребенку элемента — элементу (элемент D на рис. 18.2), мы используем:

novel. children( )[1] // Обращаемся ко второму узлу-ребенку элемента или:

novel.// Также обращаемся ко второму узлу-ребенку элемента

Хотя в расширении Е4Х нет переменной firstChild или lastChild (как в существующем классе XMLDocument), обратиться к первому ребенку в списке узлов-детей можно следующим образом:

узел. children( )[0]

К последнему ребенку в списке узлов-детей можно обратиться следующим образом:

узел. children( )[узел. children( ).length( )-l]

Однако обращение к узлу-ребенку по его позиции в списке может быть затруднительным, и поэтому значимость данного метода обращения в расширении Е4Х была снижена. В расширении Е4Х обращение к узлам-детям обычно происходит по их именам, а не по позиции. Для обращения к узлу-ребенку по имени применяется метод экземпляра child ( ) класса XML, который возвращает объект XMLList со всеми элементами-детьми, соответствующими указанному имени. Например, чтобы получить объект XMLList со всеми детьми элемента с именем «AUTHOR», используется следующий код:

novel. child(«AUTHOR») // Возвращает все элементы-детей элемента // с именем «AUTHOR»

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

novel. AUTHOR // Также возвращает все элементы-детей элемента // с именем «AUTHOR»

Если элемент содержит два элемента , выражение nove 1. AUTHOR вернет объект XMLList с двумя экземплярами класса XML, представляющими данные элементы. Для обращения к первому элементу мы могли бы использовать выражение novel. AUTHOR [ 0 ]. Для обращения ко второму элементу — выражение novel. AUTHOR [ 1 ], как показано в следующем коде:

var novel:XML =

Jacobs, Tom Schumacher, Jonathan
;

novel. AUTHOR[0]; // Обращение к Jacobs, Tom

novel. AUTH0R[1]; // Обращение к Schumacher, Jonathan

Безусловно, элемент из листинга 18.1 содержит только одного ребенка с именем «AUTHOR», поэтому объект XMLList, возвращаемый выражением novel. AUTHOR, имеет только один экземпляр класса XML (представляющий единственный элемент ). Для обращения к данному элементу мы могли бы использовать следующий код:

novel. AUTHORC0] // Обращение к экземпляру элемента

Однако (и это замечательно!) в большинстве случаев включать [0] не требуется. Чтобы сделать обращение к узлу более удобным, расширение Е4Х реализует специальное поведение для объектов XMLList, имеющих только один экземпляр класса XML (как в случае с выражением novel. AUTHOR в нашем примере). Когда метод класса XML вызывается над объектом XMLList, имеющим только один экземпляр класса XML, этот вызов метода автоматически переадресуется данному экземпляру. Выполняя переадресацию вызова метода, расширение Е4Х позволяет

программисту рассматривать объект XMLList с одним экземпляром класса XML так, будто данный объект XMLList и является экземпляром класса XML. Как указано в спецификации, расширение Е4Х «намеренно стирает различие между отдельным объектом класса XML и объектом класса XMLList, содержащим только его».

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

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

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

Полезные ссылки
Случайные записи
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 066
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.135
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.118
  • 07.10.2010">Выделение изображения с помощью маски в Photoshop
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 018
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.103
  • 24.02.2011">Руководство по actionscript. часть 6, стр. 107
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.119
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 087
  • 11.04.2014">Натуральный камень и методы его обработки
  • 04.06.2012">Судья заявил, что у Oracle нет авторских прав на Java API
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 046
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 002
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 038
  • 17.03.2011">Руководство по actionscript. часть 3, стр. 002
Опрос

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

View Results

Loading ... Loading ...