Руководство по actionscript. часть 3, стр. 033
Var novel:XML =
К текстовым узлам можно обращаться различными способами в зависимости от наших потребностей. Когда необходимо обратиться к текстовому узлу как к экземпляру класса XML, нужно использовать синтаксис обращения к узлу-ребенку, рассмотренный в предыдущем разделе. Например, чтобы обратиться к тексту «Ulysses», который является первым ребенком элемента, мы можем использовать следующий код:
novel. TITLE. children( )[0] // Обращаемся к текстовому узлу Ulysses
Или, в качестве альтернативы, мы можем использовать групповой символ свойств:
novel. TITLE.*[0] // Тоже обращаемся к текстовому узлу Ulysses
Оба предыдущих примера возвращают объект XML (а не строку), который представляет текст элемента » U1 у s s е s «. Мы можем вызывать методы класса XML над этим объектом точно так же, как и над любым другим объектом XML. Например:
novel. TITLE.*Е0].parent( ) // Обращение к элементу novel. TITLE.*[0].nodeKind( ) // Возвращает строку «text» novel. TITLE.*[0].toString( ) // Возвращает строку «Ulysses»
Однако если мы хотим просто обратиться к содержимому текстового узла, как к значению типа String, а не к экземпляру класса XML, то можем использовать метод экземпляра toString ( ) класса XML над его родительским элементом. Для таких элементов, как, например, , которые содержат только один текстовый узел-ребенок (без других промежуточных элементов), метод toString ( ) возвращает текст этого узла-ребенка, опуская начальные и конечные теги родительского элемента. Таким образом, выражение novel. TITLE. toString ( ) вернет строку «Ulysses»:
trace(novel. TITLE. toString( )); // Выводит: Ulysses
Обдумывая предыдущую строку кода, не забудьте, что на самом деле это сокращенный вариант следующего кода:
trace(novel. TITLE[0].toString( )): // Выводит: Ulysses
Сокращенный вариант выражения novel. TITLE. toString ( ) возвращает значение «Ulysses «, поскольку среда выполнения Flash знает, что объект XMLList, на который ссылается выражение novel. TITLE, имеет всего один экземпляр класса XML (), и автоматически переадресует вызов метода toString ( ) данному экземпляру.
При обращении к содержимому текстового узла как к значению типа String мы можем опускать явный вызов метода toString ( ), поскольку среда выполнения Flash вызывает метод toString ( ) автоматически, когда вместо строки используется нестроковое значение. Например, функция trace ( ) в качестве аргумента принимает строку, поэтому вместо явного вызова метода toString ( ):
trace(novel. TITLE. toString( )): // Выводит: Ulysses
мы можем позволить среде выполнения Flash вызвать этот метод неявно:
traceCnovel. TITLE); // Также выводит: Ulysses
Подобным образом при присваивании содержимого текстового узла Ulysses переменной типа String вместо использования такого полностью явного кода:
var ti tleName:Stri ng = novel. TITLECO].toStringC ):
мы можем использовать просто:
var ti tleName:Stri ng = novel. TITLE:
Замечательная возможность. И зачастую именно этот способ применяется для получения текста, содержащегося в элементе, в расширении Е4Х.