Пример XML в ActionScript: загрузка данных RSS из ИнтернетаFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий Демонстрационное приложение RSSViewer обладает рядом возможностей, позволяющих работать с XML в ActionScript, включая следующее.
Формат RSS широко используется для сбора новостей посредством XML. Простой файл с RSS-данными может выглядеть следующим образом: <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>Alaska - Weather</title> <link>http://www.nws.noaa.gov/alerts/ak.html</link> <description>Alaska - Watches, Warnings and Advisories</description> <item> <title> Short Term Forecast - Taiya Inlet, Klondike Highway (Alaska) </title> <link> http://www.nws.noaa.gov/alerts/ak.html#A18.AJKNK.1900 </link> <description> Short Term Forecast Issued At: 2005-04-11T19:00:00 Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office Homepage: http://pajk.arh.noaa.gov </description> </item> <item> <title> Short Term Forecast - Haines Borough (Alaska) </title> <link> http://www.nws.noaa.gov/alerts/ak.html#AKZ019.AJKNOWAJK.190000 </link> <description> Short Term Forecast Issued At: 2005-04-11T19:00:00 Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office Homepage: http://pajk.arh.noaa.gov </description> </item> </channel> </rss> Приложение SimpleRSS считывает RSS-данные из Интернета, делает анализ этих данных, выделяя заголовки (названия), ссылки и описания, а затем возвращает их. Класс SimpleRSSUI обеспечивает интерфейс пользователя и вызывает класс SimpleRSS, отвечающий за все этапы обработки XML. Получить файлы приложения для этого примера можно на странице www.adobe.com/go/learn_programmingAS3samples_flash_ru. Файлы с образцами применения приложения RSSViewer можно найти в папке Samples/RSSViewer. Приложение состоит из следующих файлов.
Считывание и выполнение синтаксического анализа XML-данныхКласс RSSParser включает метод xmlLoaded(), который преобразует входные RSS-данные, хранимые в переменной rssXML, в строку rssOutput, содержащую выходные данные в формате HTML. Если исходные RSS-данные включают пространство имени по умолчанию, незадолго до начала работы метода с помощью кода задается пространство имени XML по умолчанию. if (rssXML.namespace("") != undefined) { default xml namespace = rssXML.namespace(""); } Следующие строки впоследствии проходят через содержимое исходных XML-данных, исследуя каждое свойство более низкого уровня с именем item: for each (var item:XML in rssXML..item) { var itemTitle:String = item.title.toString(); var itemDescription:String = item.description.toString(); var itemLink:String = item.link.toString(); outXML += buildItemHTML(itemTitle, itemDescription, itemLink); } Первые три строки просто задают переменные для представления свойств заголовков, описаний и ссылок свойства item XML-данных. Следующая строка впоследствии вызывает метод buildItemHTML() для получения HTML-данных в форме объекта XMLList с помощью трех новых строковых переменных, выступающих в роли параметров. Компоновка данных XMLListHTML-данные (объект XMLList) имеют следующую форму: <b>itemTitle</b> <p> itemDescription <br /> <a href="link"> <font color="#008000">More...</font> </a> </p> Первые строки метода удаляют пространство имени xml по умолчанию: default xml namespace = new Namespace(); Директива default xml namespace функционирует в пределах определенной области. Это означает, что областью действия данной декларации является метод buildItemHTML(). Строки, идущие после компоновки XMLList, на основе строковых аргументов передаются в функцию: var body:XMLList = new XMLList(); body += new XML("<b>" + itemTitle + "</b>"); var p:XML = new XML("<p>" + itemDescription + "</p>"); var link:XML = <a></a>; link.@href = itemLink; // <link href="itemLinkString"></link> link.font.@color = "#008000"; // <font color="#008000"></font></a> // 0x008000 = green link.font = "More..."; p.appendChild(<br/>); p.appendChild(link); body += p; Этот объект XMLList представляет строковые данные, подходящие для текстового поля HTML ActionScript. Метод xmlLoaded() использует возвращаемое значение метода buildItemHTML() и преобразует его в строку: XML.prettyPrinting = false; rssOutput = outXML.toXMLString(); Извлечение названия RSS-канала и отправка пользовательского событияМетод xmlLoaded() задает строковую переменную rssTitle на основе исходных XML-данных RSS-канала. rssTitle = rssXML.channel.title.toString(); И, наконец, метод xmlLoaded() генерирует событие, которое уведомляет приложение о том, что синтаксический анализ данных выполнен и данные доступны: dataWritten = new Event("dataWritten", true); |
|