1 <sect1 id="zend.feed.consuming-rss">
2 <title>Работа с лентой RSS</title>
4 Чтение ленты такое же простое, как создание объекта <code>Zend_Feed_Rss</code>
8 <programlisting language="php"><![CDATA[
9 $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
14 Если при извлечении ленты произошла ошибка, то будет сгенерировано исключение
15 <code>Zend_Feed_Exception</code>.
19 Создав объект ленты, вы можете получить доступ к любым стандартным
20 свойствам канала RSS (channel) непосредственно в объекте:
23 <programlisting language="php"><![CDATA[
24 echo $channel->title();
29 Обратите внимание на синтаксис функции. <code>Zend_Feed</code> использует соглашение
30 об интерпретации свойств как объекта XML, если они запрошены в синтаксисе
31 получения переменной (<varname>$obj->property</varname> и как строки, если они запрошены
32 в синтаксисе метода (<varname>$obj->property()</varname>). Это позволяет получить доступ
33 к полному тексту любого отдельного узла, что одновременно дает полный доступ
34 и ко всем дочерним элементам.
38 Если свойства канала имеют атрибуты, то к ним можно получить доступ, используя
39 синтаксис массива PHP:
42 <programlisting language="php"><![CDATA[
43 echo $channel->category['domain'];
48 Поскольку атрибуты не могут иметь дочерние элементы, то нет
49 необходимости в синтаксисе метода для получения значений атрибутов.
53 Скорее всего, вам потребуется произвести обход ленты и выполнить
54 какие-либо операции с ее сообщениями. <code>Zend_Feed_Abstract</code>
55 реализует интерфейс PHP <code>Iterator</code>, поэтому вывод заголовков
56 всех статей в канале будет выглядеть следующим образом:
59 <programlisting language="php"><![CDATA[
60 foreach ($channel as $item) {
61 echo $item->title() . "\n";
67 На тот случай, если вы не знакомы с RSS, здесь приведены стандартные
68 элементы, которые должны присутствовать в канале (элемент
69 <code><channel></code>) и отдельных сообщениях RSS
70 (элемент <code><item></code>).
74 Обязательные элементы канала:
81 <code>title</code> - имя канала
86 <code>link</code> - URL веб-сайта, соответствующего каналу
91 <code>description</code> - одно или несколько предложений, составляющих
99 Обычно используемые необязательные элементы канала:
106 <code>pubDate</code> - дата публикации канала в формате RFC 822
111 <code>language</code> - язык, на котором написано содержимое канала
116 <code>category</code> - одна или несколько (задается несколькими тегами) категорий,
117 к которым принадлежит канал
124 Элементы <code><item></code> не имеют обязательных вложенных элементов.
125 Тем не менее, должны быть представлены заголовок
126 <code><title></code> или описание
127 <code><description></code>.
131 Обычно используемые элементы сообщения:
138 <code>title</code> - заголовок сообщения
143 <code>link</code> - URL сообщения
148 <code>description</code> - краткое описание
153 <code>author</code> - e-mail автора
158 <code>category</code> - одна или несколько категорий,
159 к которым принадлежит сообщение
164 <code>comments</code> - URL комментариев к данному сообщению
169 <code>pubDate</code> - дата публикации в формате RFC 822
176 В своем коде вы можете проверить, имеет ли элемент непустое значение,
180 <programlisting language="php"><![CDATA[
181 if ($item->propname()) {
188 Если вместо этого использовать <varname>$item->propname</varname>, то всегда будете
189 получать объект. Пустой объект расценивается как <constant>TRUE</constant>,
190 поэтому такая проверка будет некорректной.
194 Для получения более подробной информации читайте официальное описание
195 спецификации RSS 2.0:
196 <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>