###### @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]] # Название канала

^xml.selectString[string(/rss/channel/title)]

# Описание канала

^xml.selectString[string(/rss/channel/description)]

# Список материалов
^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)]}
$title ($date)
$description
}
####### @main[] Работаем с RSS ^rss[rss2.xml;http://localhost/rss2.xml]