Leyendo xml con PHP 5

Estoy necesitando parsear XML con PHP. La idea es ir armando una maqueta para un sitio que muestra artículos que obtiene de unos archivos XML.

Parsear XML en PHP4 era lento y poco práctico, razón por la cual siempre traté de evitarlo. Si hacía falta sacar algo de un archivo XML lo recorría como un archivo plano y extraía los datos con expresiones regulares.

Por otra parte entre las novedades PHP 5, el soporte para XML fue optimizado. Esto se basa en una nueva clase que envuelve la funcionalidad de una biblioteca que llama libxml: SimpleXML.

¿Por donde empezar?

La biblioteca es muy cómoda de utilizar. Acepta iteradores y permite acceder a los nodos hijos como atributos del nodo/objeto padre.


$archivo = 'entrada.xml';

//Caso 1: Directamente trayendo el archivo
$xml = simplexml_load_file($entrada);

$cadena = file_get_contents($entrada);

//Caso 2: Teniendo el contenido de texto
$xml = simplexml_load_string($cadena);

//Caso 3: O como instancia de la Clase SimpleXML
$xml = new SimpleXML($cadena);

En cualquiera de los 3 casos voy a tener un objeto $xml que representa al nodo raíz.

Supongamos que queremos mostrar links a los posts más recientes de un blog mediante feeds RSS. Mediante CURL o file_get_contents obtuvimos los datos en la variable $cadena.

$xml = new SimpleXML($cadena);

echo "Fuente :<a href=\\"".
$xml->channel->link ."\\">".
$xml->channel->title."</a>
\\n";

echo "
<ul>";
foreach ($xml->channel->item as $item)
{
echo "
	<li><a href=\\""
.$item->link ."\\">"
.$item->title."</a></li>
\\n";
}
echo "</ul>
";

Así de fácil podemos recorrer el RSS. Hay que tener encuenta que el objeto $xml es el elemento raíz de la cadena pasada (<rss> en este caso).

La próxima vez vamos a hablar de XPath, y de como acceder a los hijos y a los atributos del documento xml.

Etiquetas: , ,

5 comentarios to “Leyendo xml con PHP 5”

  1. Accediendo a XML con XPath y PHP5 « Lo de Miguel Says:

    […] a XML con XPath y PHP5 Bien, hasta ahora vimos como acceder al documento XML con PHP 5 accediendo a los nodos directamente e iterando […]

  2. M4GISTR4L Says:

    exelente … no se si puedes hacer un tuto explicando como leer xml en php4 te lo agradeceria mucho .. gracias …

  3. CaChi Says:

    M4GISTR4L, para que PHP4 si ya esta PHP5 la idea es que se migre o no manteniendo la viejo escuela la idea es Implementar los nuevo de PHP5 como lo es la POO, hace poco dí un charla y enfoque precisamente en este tema “migremos”🙂

    Éxitos!

  4. waLo Says:

    La variable $archivo del principio de todo la usas para algo ?

  5. Miguel Says:

    Amigazo, es un error.

    $entrada = ‘endrada.xml’;

    Gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: