Leer feed RSS o archivo XML con php

En ocasiones nos encontramos en la necesidad de recoger e interpretar cierta información generada por otra plataforma o software. En muchos casos, el "emisor" tiene organizada y codificada la información de manera distinta al "receptor" y esto puede ser un problema.

La mejor manera de solventar este problema es recurrir a un estandar como XML para generar y recoger esta información. De esta manera, independientemente del lenguage, codificación, y sistema de almacenamiento de los datos, la comunicación entre ambas plataformas será viable.

En este post os voy a enseñar la manera más sencilla de leer los datos de un fichero XML con php a través de simpleXML. Para ello será necesario disponer de php en su versión 5 o superior.

Con ésta técnica podremos facilitar la comunicación de datos entre dos plataformas, hacer lecturas de feeds rss externos para procesar su información y cualquier otro intercambio de información de una manera sencilla.

Supongamos que tenemos un fichero XML con nuestros discos favoritos y con 'cds.xml' por nombre, como por ejemplo éste:

<?xml version="1.0" encoding="utf-8"?>
<catalog> 
  <cd id="001">
    <title>Mellon Collie and the Infinite Sadness</title>
    <artist>The Smashing Pumpkins</artist>
    <year>1995</year>
  </cd> 
  <cd id="002">
    <title>OK Computer</title>
    <artist>Radiohead</artist>
    <year>1997</year>
  </cd> 
  <cd id="003">
    <title>White Pony</title>
    <artist>Deftones</artist>
    <year>2000</year>
  </cd> 
  <cd id="004">
    <title>Swoon</title>
    <artist>Silversun Pickups</artist>
    <year>2009</year>
  </cd> 
</catalog>

Ahora, creamos un fichero php en la misma carpeta donde vamos a incluir el fichero 'cds.xml' anterior y vamos a leer y tratar su información con éste código:

<?php
$catalog = simplexml_load_file('cds.xml');
foreach ($catalog->cd as $cd) {
echo "<b>$cd->artist : </b> ";
echo "$cd->title ( $cd->year )<br>\n";
}
?> 

Como podemos ver en el ejemplo, leemos el fichero con la función simplexml_load_file() y lo asignamos a la variable $catalog. Seguidamente recorremos cada nodo del fichero asignándolo a la variable $cd y por cada "vuelta" del bucle mostramos la información leída. El resultado sería parecido a éste :

The Smashing Pumpkins : Mellon Collie and the Infinite Sadness ( 1995 )
Radiohead : OK Computer ( 1997 )
Deftones : White Pony ( 2000 )
Silversun Pickups : Swoon ( 2009 )

Como podemos observar, la lectura y tratamiento de los datos del fichero XML es realmente fácil con simpleXML. Una vez leídos los datos podemos realizar las operaciones que necesitemos con la información, como por ejemplo insertarla en nuestra base de datos, operar con ella, generar nuevos contenidos, etc..

2 comentarios:

  1. una consulta, cuando son nodos hijos como por ejemplo content:encoded y quieres solo un nodo especifico alguna funcion en especial como el xmlparser se usaria en ese caso, se agradece de antemano la respuesta.

    ResponderEliminar
  2. muy buen dato lo voy a aplicar.

    ResponderEliminar