TigerZF
🌐Español

33.4. Consumir un feed RSS

Leer un feed RSS es tan sencillo como instanciar un objeto Zend_Feed_Rss con la URL del feed:

$channel = new Zend_Feed_Rss('http://rss.example.com/channelName');

Si ocurre algún error al obtener el feed, se lanzará una Zend_Feed_Exception.

Una vez que tiene un objeto feed, puede acceder a cualquiera de las propiedades estándar del "channel" (canal) RSS directamente en el objeto:

echo $channel->title();

Observe la sintaxis de función. Zend_Feed usa una convención de tratar las propiedades como objeto XML si se solicitan con sintaxis "getter" de variable ($obj->property) y como cadenas si se accede a ellas con sintaxis de método ($obj->property()). Esto permite el acceso al texto completo de cualquier nodo individual, a la vez que sigue permitiendo el acceso completo a todos los hijos.

Si las propiedades del canal tienen atributos, son accesibles usando la sintaxis de array de PHP:

echo $channel->category['domain'];

Dado que los atributos XML no pueden tener hijos, no es necesaria la sintaxis de método para acceder a los valores de los atributos.

Lo más habitual será que quiera recorrer el feed y hacer algo con sus entradas. Zend_Feed_Abstract implementa la interfaz Iterator de PHP, por lo que imprimir todos los títulos de los artículos en un canal es simplemente cuestión de:

foreach ($channel as $item) {
    echo $item->title() . "\n";
}

Si no está familiarizado con RSS, estos son los elementos estándar que puede esperar encontrar disponibles en un canal RSS y en elementos RSS individuales (entradas).

Elementos de canal obligatorios:

  • title - El nombre del canal

  • link - La URL del sitio web correspondiente al canal

  • description - Una o varias frases describiendo el canal

Elementos de canal opcionales comunes:

  • pubDate - La fecha de publicación de este conjunto de contenido, en formato de fecha RFC 822

  • language - El idioma en que está escrito el canal

  • category - Una o más (especificadas mediante múltiples etiquetas) categorías a las que pertenece el canal

Los elementos <item> de RSS no tienen ningún elemento estrictamente obligatorio. Sin embargo, debe estar presente title o description.

Elementos de item comunes:

  • title - El título del item

  • link - La URL del item

  • description - Una sinopsis del item

  • author - La dirección de correo electrónico del autor

  • category - Una o más categorías a las que pertenece el item

  • comments - URL de los comentarios relacionados con este item

  • pubDate - La fecha en que se publicó el item, en formato de fecha RFC 822

En su código siempre puede comprobar si un elemento no está vacío con:

if ($item->propname()) {
    // ... proceed.
}

Si usa $item->propname en su lugar, siempre obtendrá un objeto vacío que se evaluará como TRUE, por lo que su comprobación fallará.

Para más información, la especificación oficial de RSS 2.0 está disponible en: http://blogs.law.harvard.edu/tech/rss