Работаем с RSS


Работаем с RSSМорда: СтандартнаяСераяЗеленая Главная / Портфель / Работаем с RSS Запомнить № 22:
 Работаем с RSSОпубликовано:
 21 февраля 2003Изменено:
 27 февраля 2003 | В последнее время, популярность формата RSS  — Really Simple Syndication, начала подниматься. Подробнее о том, что это такое читайте у Дмитрия Смирнова, — ссылка есть в конце этой страницы. Пожалуй, внесу и я свою лепту в это дело, — приведу небольшой пример кода работы на парсере с внешним XML в формате RSS.Этот пример будет основан на предыдущем примере работы с внешним XML. Разумеется структура RSSXML несколько другая, чем в этом примере. Я буду работать с версией RSS 2.0 — это конечно не особенно принципиально, потому что код легко адаптируется и для других версий (0.91, 1.0 и пр.). Результирующий HTML будет списком определений dl (definition list). Итак, к делу:
######
@rss[local_file;remote_file][src;xml;list;now;date;title;link;description]
# проверяем локальный файл, - если его дата изменения более чем на
# день старее текущего времени, грузим его с внешнего сервера
$src[^file::stat[$local_file]]
$now[^date::now[]]
^if($src.mdate < $now-1){
# пытаемся загрузить и проверить внешний XML файл и сохранить его
# если не удается загрузка и/или проверка, обрабатываем исключение и ничего не делаем
^try{
# Загрузка внешнего файла
$src[^file::load[text;$remote_file]]
# проверка, - пытаемся создать объект класса xdoc из внешнего XML
$xml[^xdoc::create{^untaint{$src.text}}]
^src.save[text;$local_file]
}{
$exception.handled(1)
}
}
# всегда создаем объект класса xdoc из XML файла на локальном диске
# разумеется он должен всегда существовать. При удачной загрузке с
# внешнего сервера, он ещё и постоянно обновляется
$xml[^xdoc::load[$local_file]]
# хэш элементов item из файла
$list[^xml.select[/rss/channel/item]]
# Название канала
<h1>^xml.selectString[string(/rss/channel/title)]</h1>
# Описание канала
<p>^xml.selectString[string(/rss/channel/description)]</p>
# Список материалов
<dl>
^for[i](1;$list){
$date{^xml.selectString[string(/rss/channel/item[position() = $i]/pubDate)]}
$title{^xml.selectString[string(/rss/channel/item[position() = $i]/title)]}
$link{^xml.selectString[string(/rss/channel/item[position() = $i]/link)]}
$description{^xml.selectString[string(/rss/channel/item[position() = $i]/description)]}
<dt><a href="$link">$title</a> ($date)</dt>
<dd>$description</dd>
}
</dl>
Примечание:Проверка создания xdoc объекта из внешнего XML имеет цель просто проверить правильность оформления внешнего XML и она конечно не может выявить несоответствия этого XML словарю RSS, поскольку в текущей версии парсера, при работе с XML, отсутствует проверка валидности документов либо с помощью DTD либо с помощью XML Schema.Понятно что метод вызывается с двумя параметрами:local_file — локальный XML с путём к нему вида /external_xml/rss2.xmlremote_file — URL удалённого XMLRSS^rss[rss2.xml;http://www.server.ru/rss2.xml]Полезно также, почитать предыдущий пример про работу с внешним XML. А здесь вроде всё, — тренируемся :)Загрузить пример: rss.zip (Дата: 2.8.2003 Размер: 4.9 Kб)<< № 21 | Содержание | № 23 >>Из последнего№ 24 Работаем с .htpasswd 08.11.2003 (Изменено: 10.01.2004)№ 23 Самодокументирование парсерного кода 14.09.2003№ 22 Работаем с RSS 21.02.2003№ 21 Топологическая сортировка 16.02.2003№ 20 Установка 3-го парсера на хостинге 350mb.ru 12.02.2003ПолезноеParser 3Parser.ruWWWRSS 2.0Что такое RSSXMLRaleigh.ruXMLГлавная / Портфель / Работаем с RSS Запомнить Информация о сервереАвторРегистрация/настройки
содержание | 2 | Получить информация о сетевой маркетинг в россии, компании amway, Amway в вопросах и ответах
Используются технологии uCoz