Руководство по actionscript. часть 3, стр. 036
Var novel:XML =
Ulysses
В расширении Е4Х отсутствует встроенная поддержка перемещений между узлами-братьями в иерархии XML. Переменные nextSibling и previousSibling, поддерживаемые в модели DOM, не являются частью интерфейса API расширения Е4Х. Однако следующий брат любого узла может быть получен с помощью следующего кода, предполагая, что у данного узла есть узел-родитель:
некийУзел. рагепК ) .*[^екмУзел. childlndex( )+1];
Предшествующий брат может быть найден с помощью следующего кода:
некийУзел. parent( ) *[некийУзел. chi1dlndex( )-1];
Например, данный код обращается к предшествующему и следующему братьям элемента
var author:XML = novel. AUTHOR[0]; // Предшествующий брат
trace(author. parent( ).*[author. childlndex( )-l]); // Выводит: Ulysses // Следующий брат
trace(author. parent( ).*[author. childIndex( )+1]); // Выводит:
// Penguin Books Ltd
В листинге 18.4 представлен код пользовательского метода для обращения к предшествующему брату данного узла. Обратите внимание, что метод добавляет код для проверки того, что указанный узел действительно имеет предшествующего брата, перед тем как вернуть его.
Листинг 18.4. Пользовательский метод previousSibling()
public function previousSibling (theNode:XML):XML { // Проверяем, что узел действительно имеет предшествующего брата, // перед тем как вернуть его
if (theNode. parent( ) != null && theNode. childIndex( ) > 0) {
return theNode. parent( ).*[theNode. childIndex( )-l]; } else {
return null;
}
}
// Использование:
previ ousSi bli ng(некийУзел);
В листинге 18.5 определен метод nextSibling ( ) — метод-компаньон пользовательского метода previous Sibling ( ), определенного в листинге 18.4. Обратите внимание, что метод добавляет код для проверки, что указанный узел действительно имеет следующего брата, перед тем как вернуть его.