Руководство по actionscript. часть 3, стр. 029
? Использовать конструктор класса XML, чтобы создать сначала новый экземпляр класса XML, а затем программным путем — оставшуюся часть фрагмента, применяя методики, описанные далее, в разд. «Изменение или создание нового содержимого XML».
? Использовать конструктор класса XML, чтобы создать новый экземпляр класса XML, а затем импортировать фрагмент из загруженного внешнего файла, как рассматривается далее, в разд. «Загрузка XML-данных».
? Ввести наши XML-данные в форме литерала, как обычную строку или число, в любом месте, где ActionScript допускает использование литералов.
Пока мы воспользуемся третьим подходом — создадим XML-фрагмент с помощью литерала XML. Это демонстрирует листинг 18.2. В нем переменной novel присваивается значение литерала XML (XML-фрагмент из листинга 18.1).
Листинг 18.2. Присваивание литерала XML переменной
var novel:XML =
При выполнении предыдущего кода среда Flash создает новый экземпляр класса XML расширения Е4Х, представляющий литерал фрагмента XML, и присваивает его переменной novel.
Чтобы просмотреть исходный код XML экземпляра класса XML (наподобие экземпляра, на который ссылается переменная novel), используйте метод экземпляра toXMLString() класса XML, как показано в следующей строке:
trace(novel. toXMLString( ));
Метод toXMLString() рассматривается далее, в разд. «Преобразование объектов XML и XMLList в строки».
Обратите внимание, что использование переводов строк и кавычек в предыдущем литерале XML является абсолютно нормальным. Компилятор знает, что они являются частью данных XML, и интерпретирует их так, как это необходимо. Где это возможно, компилятор даже конвертирует определенные зарезервированные символы в сущности языка XML. Дополнительную информацию можно найти в подразд. «Использование сущностей XML для специальных символов» разд. «Изменение или создание нового содержимого XML».
Язык ActionScript также позволяет использовать динамические выражения в литерале XML, поэтому названия элементов, атрибутов, значения атрибутов и содержимое элементов можно генерировать программным путем. Чтобы указать динамическое выражение в литерале XML, включите его в фигурные скобки ({ }). Например, следующий код задает название тега динамически:
var elementName:String = «BOOK»; var novel:XML = <{elementname}/>;
Следующий код представляет слегка усложненный пример, в котором создается иерархия XML, приведенная в листинге 18.2, но при этом все названия элементов, названия атрибутов, значения атрибутов и содержимое элементов задаются динамически.
var rootElementName:String = «BOOK»; var rootAttributeName:String = «ISBN»;
var chiIdElementNames:Array = ["TITLE", "AUTHOR", "PUBLISHER"];
var book ISBN.-String = «0141182806″;
var bookTitle:String = «Ulysses»;
var bookAuthor:String = «Joyce, James»;
var bookPublisher:String = «Penguin Books Ltd»;
var novel:XML = <{rootelementname} {rootattributename}={bookisbn}> <{childelementnames[0]}>{bookTitle}{childelementnames[0]}> <{childelementnames[l]}>{bookAuthor}{childelementnames[l]}> <{chiidelementnames[2]}>{bookPublisher}{chiidelementnames[2]}> {rootelementname}>;
Стоит отметить, что, поскольку символы { } применяются для обозначения динамического выражения, их использование в некоторых частях литерала XML недопустимо. В частности, внутри названия элемента, названия атрибута или содержимого элемента для представления символов { и } должны использоваться сущности & #х7В; h} соответственно. Тем не менее в виде литерала символы
{ и } могут быть использованы внутри значения атрибута, раздела С DATA, инструкции обработки или комментария.