Flash и XML Печать
Статьи - Flash и XML

Flash и XML

XML — это одна из наиболее важных в истории информатики разработок в области синтаксиса документов. За последние 10 лет XML получил чрезвычайно широкое распространение. Он стал синтаксисом новых форматов документов практически во всех сферах применения компьютеров. Чем же так хорош XML и чем данная технология может помочь Flash-разработчику? XML — это самый простой, ясный и гибкий из всех изобретенных человечеством синтаксисов документов. В мире компьютеров же к форме текстового документа можно привести любую структуру данных. Следовательно, XML полезен как лучший формат сохранения и передачи структурированных данных. Конечно, зачастую структуру данных можно представить и в более элементарной, чем XML, форме строки с парами имя-значение. Например, если вам нужно передать на сервер следующий объект:

var capitals:Object={England: “London”, USA: “Washington”, Russia: “Moscow”};

то его вполне приемлемо записать в такой форме:

England=London&USA=Washington&Russia=Moscow

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

Но что, если в свойстве объекта будет храниться другой объект или массив? При этом представить его линейной структурой, которой является строка с парами имя-значение, будет весьма проблематично. А ведь степень вложенности объектов и сложность связей между ними могут быть любыми… Чтобы представить подобные древовидные структуры данных, нужен формат, способный их однозначно описать при сколь угодно большой степени вложенности элементов. И таким форматом является XML. Например, следующий объект:

 

var peoples:Object ={Jonh:{age:24, phones:[34563459, 845677563]}, Bob:{age:31,

phones:[28965745]}},

можно описать таким XML-документом:

<peoples>

<person name=’Jonh’>

<age value=’24’/>

<phones>

<number>3456459</number>

<number>845677563</number>

</phones>

</person>

<person name=’Bob’>

<age value=’31’/>

<phones>

<number>28965754</number>

</phones>

</person>

</peoples>

Подобным образом XML дает возможность представлять в виде текстовых документов сколь угодно сложные структуры данных. Воссоздать же на основании XML-документа более подходящую для обработки и анализа языком программирования структуру данных будет, ввиду простоты и однозначности правил синтаксиса XML, очень легко. Более того, для этого почти наверняка не придется писать никакого кода. Дело в том, что сейчас в любом более-менее широко распространенном универсальном или скриптовом языке есть библиотеки, отвечающие за работу с XML. В ActionScript за нее отвечают классы XML и XMLNode, при помощи которых XML-документ представляется как дерево объектов.

Конечно, нечто подобное на XML и, возможно, даже более подходящее для решения какой-то конкретной задачи, можно придумать и самостоятельно. Но делать это не стоит. Помимо того, что при этом вам придется дополнительно написать большой фрагмент кода, вы потеряете одно из основных достоинств XML — переносимость. Язык XML является стандартизированным и общепринятым форматом обмена данными между приложениями. Поэтому, например, преобразовав объект в XML-представление, вы можете передать его серверу, Java-приложению или СУБД. И любая из этих систем сможет преобразовать полученные данные в присущее ей внутреннее представление. Но чтобы система смогла разобрать ваш собственный формат описания структур данных, она должна быть вами создана. Данные же в формате XML являются переносимыми. То есть, в них сможет разобраться практически любая система, а не только та, в которой соответствующий документ был создан.

Итак, первичная задача, для которой XML используется в ActionScript, связана с преобразованием структур данных в представление, в котором они могут быть сохранены, переданы стороннему приложению, а также на основании которого исходные структуры данных могут быть легко восстановлены в первоначальном виде. Также XML полезен для создания сложных нелинейных описаний. Еще одна сфера использования XML во Flash — разметка текста. Чтобы проиллюстрировать, насколько полезно владеть XML ActionScript-программисту, опишем несколько задач, наиболее эффективное решение которых связано с применением XML:

• Представьте, что вам необходимо создать Flash-приложение, в котором имитируется интерфейс Windows. Ключевым элементом такого приложения должен быть компонент, изображающий окно. Этот компонент следует сделать так, чтобы его содержимое, пункты главного и контекстного меню можно было задавать произвольно. Подменю главного меню могут иметь любую степень вложенности. Возникает вопрос: как можно наиболее просто задать главное меню и структуру его подменю. По сути говоря, тут возникает задача описания дерева. А наиболее просто задать дерево можно как раз при помощи XML.

• Классический пример использования XML — это фотогалерея. Как создать такую галерею, чтобы в нее можно было добавлять новые фотографии и удалять старые, не производя перекомпиляцию фильма? Очень просто. Ее структуру нужно описать при помощи XML- документа, в котором будут храниться ссылки на нужные файлы. Разобрав этот документ, фильм подгрузит необходимые фотографии посредством функции loadMovie() или класса MovieClipLoader.

• XML-документ удобно использовать в качестве небольшой базы данных. Например, представьте, что вы создаете игру и хотите ввести в нее возможность сохранения текущей игровой позиции. Чтобы однозначно воссоздать состояние игры, нужно знать значения всех ключевых свойств и переменных. Следовательно, чтобы сохранить игровую позицию, следует записать в XML-документе эти свойства и переменные, а затем отправить полученный файл на сервер. При необходимости его нужно будет загрузить, разобрать и переопределить нужные переменные и свойства — и игра начнется с того же места, на котором она была приостановлена.

• Лучший на данный момент сокет-сервер ElectroServer принимает данные и команды в виде XML-документов. Используя данный сервер, вы сможете создать многопользовательскую игру, чат или биржевое приложение.

Примеров применения XML можно привести еще очень много. Недаром данная технология стала столь популярной в последние годы. Хороший ActionScript-разработчик должен обязательно владеть XML, так как без этого довольно сложно создать легко настраиваемое и расширяемое приложение, а также приложение, взаимодействующее с другими технологиями.

В этой статье мы изучим, как средствами ActionScript можно анализировать существующие и создавать новые XML-документы. Но так как не все читатели знают XML, вначале мы обсудим основные принципы данного языка. Ввиду простоты XML и ограниченности его поддержки во Flash, небольшого обзора будет вполне достаточно для того, чтобы рассмотреть XML в достаточном для решения основных практических задач объеме.