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. Приложение состоит из следующих файлов.
File
|
Описание
|
RSSViewer.mxml
или
RSSViewer.fla
|
Основной файл приложения Flash (FLA) или Flex (MXML).
|
com/example/programmingas3/rssViewer/RSSParser.as
|
Класс, содержащий методы, использующие E4X для пересечения RSS (XML)-данных и создания соответствующего представления в HTML.
|
RSSData/ak.rss
|
Демонстрационный RSS-файл. Данное приложение настроено на считывание RSS-данных из Интернета по RSS-каналу Flex, управляемому Adobe. Однако очень просто можно изменить настройки приложения на считывание RSS-данных из этого документа, в котором применяется схема, слегка отличающаяся от схемы RSS-канала Flex.
|
Считывание и выполнение синтаксического анализа 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 с помощью трех новых строковых переменных, выступающих в роли параметров.
Компоновка данных XMLList
HTML-данные (объект 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);
|
|
|