§15.4. Загрузка xml
Обычно работа с XML во Flash заключается в загрузке документа из внешнего источника или отсылке куда-либо. Чтобы загрузить XML из внешнего источника, необходимо сделать следующее:
Создать объект XML.
C помощью метода load() объекта XML загрузить данные в XML-формате из внешнего источника.
Например:
myXML = new XML();
myXML.load("http://somedomain.com/info.xml");
В данном случает документ загружается из статичного XML-файла, однако это не единственный путь. Можно указать ASP-страницу (или другую страницу сценария), результатом выполнения скрипта которой станет XML-документ.
Как узнать, что загрузка XML из источника в объект XML завершилась? Очень просто – с помощью события onLoad объекта XML. Можно использовать обработчик этого события для вызова функции, которую необходимо выполнить по окончании загрузки. Возьмем такой пример:
function init () {
//здесь могут быть действия, анализирующие документ
}
myXML = new XML();
myXML.onLoad = init;
myXML.load("http://somedomain.com/info.xml");
Как указывает вторая снизу строка, по завершении загрузки документа XML должна быть вызвана функция init.
§15.5. Посылка xml
Объект XML дает возможность отослать XML-данные по указанному адресу. Также имеется возможность, послав XML, сразу же загрузить результаты его обработки.
Для отсылки XML нужно воспользоваться методом send(), указав необходимый URL. Например:
myXML = new XML("<Message><Text>Hi!</Text></Message>");
myXML.send("http://somedomain.com/somedestination.asp");
Чтобы послать XML и сразу получить ответ, следует применить метод sendAndLoad() объекта XML. При этом необходимо указать XML-объект, содержимое которого нужно отослать, URL-адрес места назначения, а также объект XML, в который должно быть загружено ответное послание. Как и в случае с методом load(), здесь событие onLoad поможет узнать, что ответ уже загружен. Вот пример:
URL = "http://www.electrotank.com/projects/tfts/using_xml/UserLogin.asp";
function init () {
trace(objToReceive);
}
xmlToSend =
"<Login><UserName>Jobem</UserName><Password>hayes</Password></Login>";
objToSend = new XML(xmlToSend);
objToReceive = new XML();
objToReceive.onLoad = init;
objToSend.sendAndLoad(URL, objToReceive);
Данный скрипт создает объект XML (objToSend), содержащий информацию для входа на сайт, и затем отсылает его на URL, ожидая получить ответ. Как только этот ответ будет полностью загружен в принимающий XML-объект (objToReceive), вызывается функция init.
Узнав первичную информацию о формате XML, а также об объектах XML, их методах и свойствах можно перейти к созданию несколько простых XML-документов, выполнив несложный анализ и применив метод sendAndLoad() – все это в рамках Flash-приложения, которое будет служить экраном регистрации пользователей.
Flash-файл, над которым мы будем работать в этом разделе, взаимодействует с ASP-страницами. Чтобы полностью построить и протестировать этот файл, вам понадобится доступ к серверу, который сможет выполнить ASP-скрипты (как правило, это серверы под управлением Windows). Для тестирования файлов этого упражнения нужно выложить на Windows-сервер, в один каталог, два ASP-файла (AddUser.asp и UserLogin.asp) и файл базы данных MS Access (XMLExample.mdb). Эти файлы вы найдете в папке Lesson12/Assets.
Страница AddUser.asp воспринимает XML-документы, имеющие следующую структуру:
<Register>
<UserName>jobem</UserName>
<Email>jobe@electrotank.com</Email>
<Password>secret</Password>
</Register>
В случае правильной регистрации пользователя страница AddUser.asp возвращает следующий результат:
<Register>
<Message>User Inserted</Message>
</Register>
Если же пользователь с таким именем уже существует, будет возвращен такой результат:
<Register>
<Message>User Exists</Message>
</Register>
Страница UserLogin.asp воспринимает XML-документы, имеющие следующую структуру:
<Login>
<UserName>jobem</UserName>
<Password>secretword</Password>
</Login>
Если информация верна, то страница возвращает следующий результат:
<Login>
<Message>Login Correct</Message>
</Login>
Если информация неверна, будет возвращен такой результат:
<Login>
<Message>Login Incorrect</Message>
</Login>