Skip to content

Parsear XML con PHP

En la vida de todo webmáster, llega un día en el que has de emprender tareas imposibles. Por ejemplo, ésta: procesar un documento XML con PHP y obtener unos datos en concreto.

Es terreno pantanoso, porque es todo experimental aún (es decir, varía entre versiones sin retrocompatibilidad) y si no tienes algo de experiencia te pierdes. Yo en ASP no tenía muchos problemas, pero cuando lo intenté hacer en PHP me tragaron las arenas movedizas y ahí lo dejé.

Hoy Patoroco me pidió que le echara una mano y pensé que era un buen momento para volver a intentarlo. Al final salió algo decente. Trabajamos con el XML de las estadísticas del Azureus y queríamos obtener los títulos de las descargas en curso. El código es este:

<?php
// Ruta al archivo
$xml = 'http://ackbar.f2o.org/stats.xml';

// Creamos el objeto DOM
$xmldoc = domxml_open_file($xml);

// Creamos un contexto en este documento para la consulta XPath
$xpctx = $xmldoc->xpath_new_context();
// Ejecutamos la consulta XPath en el contexto creado y recogemos el resultado
$result = xpath_eval($xpctx, '/STATS/DOWNLOADS/DOWNLOAD/TORRENT/NAME');

foreach ($result->nodeset as $nodo) {
    // Recorremos el array volcando el contenido (texto) de los nodos
    echo '<p>';
    echo $nodo->get_content();
    echo '</p>';
}

?>

Patoroco lo ha convertido en una bonita y práctica función a la que le pasas la ruta XPath. Para el que no domine mucho este lenguaje, en W3Schools hay un tutorial muy majo.

La verdad es que es un script muy práctico y cargado de posibilidades. Seguro que en Ted encuentro cómo aprovecharlo.