Ejemplos PHP -Lector AJAX RSS


El lector RSS se utiliza para leer feeds RSS.


Lector AJAX RSS

En el siguiente ejemplo, demostraremos un lector RSS mediante el cual el contenido de RSS se carga sin necesidad de actualizar la página web:


Lista de datos del RSS-feed...

Explicación del ejemplo - Página HTML

Cuando el usuario selecciona un RSS-feed en la lista desplegable anterior, se ejecuta la función llamada "showRSS()". Esta función se activa mediante el evento "onchange":

Ejemplo

<html> <head> <meta charset="utf-8"> <title>Ejemplo (example.com)</title> <script>function showRSS(str) { if (str.length==0) { document.getElementById("rssOutput").innerHTML=""; return; } if (window.XMLHttpRequest) { // Código ejecutado por los navegadores IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // Código ejecutado por los navegadores IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("rssOutput").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getrss.php?q="+str,true); xmlhttp.send(); }</script> </head> <body> <form> <select onchange="showRSS(this.value)"> <option value="">Selecciona un RSS-feed:</option> <option value="rss">Leer datos RSS</option> </select> </form> <br> <div id="rssOutput">Lista de datos del RSS-feed...</div> </body> </html>

La función showRSS() realiza los siguientes pasos:

  • Comprueba si se ha seleccionado un RSS-feed
  • Crea el objeto XMLHttpRequest
  • Crea la función que se ejecuta cuando la respuesta del servidor está lista
  • Envía una solicitud al archivo en el servidor
  • Observa que se agrega un parámetro (q) al final de la URL (que contiene el contenido de la lista desplegable)

Archivo PHP

Archivorss_demo.xml。

La página del servidor invocada anteriormente a través de JavaScript es un archivo PHP llamado "getrss.php":

Ejemplo

<?php //Archivo RSS $xml="rss_demo.xml"; $xmlDoc = new DOMDocument(); $xmlDoc->load($xml); //Lee los elementos de "<channel>" $channel=$xmlDoc->getElementsByTagName('channel')->item(0); $channel_title = $channel->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $channel_link = $channel->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $channel_desc = $channel->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; //Muestra los elementos dentro de "<channel>" echo("<p><a href='" . $channel_link . "'>" . $channel_title . "</a>"); echo("<br>"); echo($channel_desc . "</p>"); //Muestra los elementos dentro de "<item>" $x=$xmlDoc->getElementsByTagName('item'); for ($i=0; $i<=1; $i++) { $item_title=$x->item($i)->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $item_link=$x->item($i)->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $item_desc=$x->item($i)->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; echo ("<p><a href='" . $item_link . "'>" . $item_title . "</a>"); echo ("<br>"); echo ($item_desc . "</p>"); } ?>

Cuando la solicitud del feed RSS se envía desde JavaScript al archivo PHP, ocurrirá lo siguiente:

  • Comprueba qué feed RSS está seleccionado
  • Crea un nuevo objeto XML DOM
  • Carga el documento RSS en la variable xml
  • Extrae y muestra los elementos del elemento channel
  • Extrae y muestra los elementos del elemento item
Otras extensiones