Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 12:

Применение XML во Flash

< Урок 11 || Урок 12: 1234567 || Урок 13 >
Аннотация: Вообразите, что все электроприборы в вашем доме имеют разные вилки, которые притом не подходят к розеткам. В таком случае, пожалуй, вам пришлось бы засунуть все эти штуки подальше в шкаф и делать работу собственными руками. Или, к примеру, представьте, что отвертки и ключи из вашего набора даже близко не соответствуют винтам, шурупам и болтам, которые вам предстоит завинчивать! К счастью, ни того, ни другого не случится, поскольку люди давно уже сообразили, что общественный труд будет гораздо более продуктивным, если изделия будут изготавливаться в соответствии с определенными правилами, или стандартами.
Ключевые слова: ПО, flash, XML, XMLSocket, ASP, сокет, socket, extensible markup language, опыт, письмо, веб-сервер, сервер, отношение, HTML, пользователь, тег, node, XML-документ, имя узла, значение, слово, атрибут, free, адресная книга, объект, форматирование, базы данных, скрипт, приложение, текстовые файлы, файл, порт, адрес, escape, перевод строки, место, анализ, загрузка, доступ, имя переменной, firstChild, attribute, init, send, adduser, MS Access, MDB, asset, Actions, labels, background, кадр, сайт, информация, функция, submit, UserName, создание строки, загрузка данных, URL, waiting, байт, строка данных, переменная, response, login, correct, incorrect, fail, регистрационная информация, путь, email, USER, EXISTS, registration, enter, управляемые данные, двунаправленность, канал связи, обмен информацией, обмен данными, Java, Visual Basic, персональный компьютер, операционная система, Windows, windows 2000, mac os, CD-ROM, автор, software, программное обеспечение, environment, JRE, команда, конструктор, ActionScript, синтаксис, параметр, hostname, localhost, компьютер, l-port, поле, chat, MSG, тело функции, конкатенация, опция, компонент, полоса прокрутки, scroll bar, обработка событий, локальная переменная, Connection, terminate, receiver, server, курсор

По существу, стандартизация дает возможность взаимодействовать между собой разнородным предметам – фонарику и батарейкам, Macromedia Flash и серверу многопользовательской игры, и так далее. Также и во Всемирной сети, где каждую секунду перемещаются огромные объемы данных, чрезвычайно важно стандартизировать способы обмена данными между системами. Мощный и простой в использовании XML очень быстро становится таким общепринятым стандартом.

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

Внимание! Для работы с этим уроком необходимы учебные файлы, которые Вы можете загрузить здесь.

Что будет изучаться

В этом уроке:

  • Формат XML
  • Отсылка XML-данных на сервер и загрузка их с сервера
  • Создание нового объекта XML
  • Применение методов, свойств и событий объекта XML
  • Организация соединения с сокет-сервером при помощи Flash

Несложное чат-приложение, которое мы запрограммируем в этом уроке, будет использовать соединение типа XML socket.

Время выполнения

На выполнение этого урока требуется примерно полтора часа.

Файлы урока

Файлы-носители:

Нет

Стартовые файлы:

Lesson12/Assets/LoginRegister1.fla
Lesson12/Assets/Chat1.fla

Законченные проекты:

LoginRegister2.fla
Chat2.fla

Основы xml

Хотя само название XML, или eXtensible Markup Language, звучит несколько таинственно, понять и освоить этот язык совсем несложно. В сущности, XML есть способ форматирования и структурирования информации, которую приложения-получатели могут интерпретировать и использовать. На самом деле все мы, быть может, сами о том не подозревая, имеем большой опыт структурирования и организации информации. Возьмем такой пример.

Когда вы хотите написать другу письмо, вы должны структурировать свои мысли (информацию) в таком формате, который ваш друг сможет распознать. Итак, вы начинаете писать слова на листе бумаги, начиная с левого верхнего угла и разделяя свои мысли на абзацы, предложения и слова. Конечно, вы могли бы писать не слева направо, а как-нибудь по кругу, или вообще попытаться передать свои мысли картинками, однако такой способ, скорее всего, лишь приведет вашего друга в недоумение. А написав письмо в таком формате, который вашему другу привычен, вы сможете быть уверены в том, что ваше послание будет понято – то есть передача ваших мыслей (данных, информации) получателю письма совершится успешно.


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

В синтаксисе XML, подобно HTML, используются теги, атрибуты и значения – но на этом сходство и заканчивается. Тогда как в HTML используются заранее определенные теги (например, body, head или html ), в XML пользователь создает свои собственные, а не выбирает готовые имена из библиотеки. Давайте для начала рассмотрим вот этот простой документ XML:

<MyFriends>
  <Name Gender="female">Kelly Makar</Name>
  <Name Gender="male">Mike Grundvig</Name>
  <Name Gender="male">Free Makar</Name>
</MyFriends>

Каждый тег XML называется узлом ( node ), набор данных в формате XML называется документом XML. В нашем документе-примере имеется корневой узел MyFriends и три дочерних узла. Каждый XML-документ может содержать только один корневой узел. Первый из дочерних узлов имеет имя узла Name и значение узла Kelly Makar. Слово Gender в каждом из дочерних узлов – атрибут. Атрибуты необязательны; каждый узел может иметь неограниченное число атрибутов. Обычно атрибуты используются для размещения небольших порций информации, которые необязательно отображать на экране (например, идентификационный номер пользователя).


Как вы видите в этом примере, теги (которые мы сами же создали и описали) придают смысл порциям информации (Kelly Makar, Mike Grundvig и Free Makar).

Следующий XML-документ являет более сложный пример структурирования.

<AddressBook>
  <Person>
    <Name>Kelly Makar</Name>
    <Street>121 Baker Street</Street>
    <City>Some City</City>
    <State>North Carolina</State>
  </Person>
  <Person>
    <Name>Tripp Carter</Name>
    <Street>777 Another Street</Street>
    <City>Elizabeth City</City>
    <State>North Carolina</State>
  </Person>
</AddressBook>

В этом примере показано, как могут выглядеть данные адресной книги в формате XML. Если бы в нашей адресной книге числилось 600 человек, то узел Person повторялся бы 600 раз при той же самой структуре.

Каким же образом следует создавать свои узлы, свою структуру? Как объект-получатель (ASP-страница, сокет и т.п.) распознает форматирование документа? Ответ прост – средства для этого должны быть встроены в объект-получатель. Например, если мы создали адресную книгу во Flash и хотим поместить содержащуюся в ней информацию в базу данных, нам следует послать версию нашей книги в формате XML на ASP-страницу (или другую страницу сценария), которая сможет проанализировать информацию и разместить данные в соответствующих полях базы данных. Вы должны понимать, что этот скрипт ASP-страницы должен быть заранее разработан так, чтобы обработать данные должным образом. XML больше приспособлен для передачи информации, чем для хранения; поэтому данные нашей адресной книги удобнее хранить в записях базы данных, чем в виде XML-документа. Когда понадобится, информацию можно будет извлечь из базы данных, с помощью специального скрипта перевести в формат XML и переслать во Flash или другое приложение.


Иногда также используют текстовые файлы, содержащие информацию в формате XML – например, статичный XML-файл, хранящий информацию о том, какую ASP-страницу следует вызвать или какой порт и IP-адрес использовать для соединения с сокет-сервером.

Итак, с основами структуры XML вы ознакомились; теперь мы перечислим некоторые правила, которым необходимо следовать при составлении XML-документов.

  • Не следует начинать имена узлов буквами XML; многие XML-анализаторы прерывают разбор документа, встретив такое сочетание символов.
  • Каждый узел должен быть правильно завершен – например, для закрытия узла <Name> служит </Name>.
  • Все служебные символы должны кодироваться в стандарте URL (во Flash это можно сделать с помощью функции escape() ). Многие анализаторы интерпретируют некоторые не кодированные служебные символы как начало нового узла – а потом не обнаруживают его завершения. Документ с незавершенными узлами не сможет пройти через XML-анализатор полностью. С атрибутами нужно быть еще внимательнее – здесь ошибку анализа могут вызвать даже такие символы, как перевод строки или амперсанд ( & ). Правильно кодируя текст по стандарту URL, вы избежите подобных проблем.
  • Большинство XML-анализаторов учитывают регистр клавиатуры (различают прописные и строчные буквы). Это означает, что все соответствующие друг другу теги должны иметь одинаковое написание. Если узел был начат с <Name>, а завершился </name>, это приведет к ошибке.
  • Корневой узел должен быть единственным.

Прежде чем приступить к работе, стоит, пожалуй, упомянуть еще об одном. Все это правильное и красивое оформление структуры XML-документа (каждый узел с новой строки, отступы для дочерних узлов и т.п.) совершенно необязательно. Все это просто облегчает чтение документа для нас. А для XML-анализаторов это просто пустое место; им все равно, есть эти отступы или нет их.

< Урок 11 || Урок 12: 1234567 || Урок 13 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003