Parsear XML con PHP

calendario08/07/2004reloj00:58calendarioCategorías: PHP

Esta tarde me instalé el Azureus, un cliente de Bittorrent, y la verdad es que va muy bien, y encima me fijé en que a diferencia de otros clientes P2P, en lugar de crear un archivo de texto plano con las estadísticas y demás, crea un fichero XML, para el cual hay varias funciones en PHP, pero que para mi eran imposibles de entender, por lo que le pedí ayuda a Diz, y al poco tiempo me apareció con el código que él mismo ha publicado aquí, y que yo he arreglado un poco, convirtiéndolo en una función, que para mi gusto es más sencilla de usar. El código es este:

< ?php
function parsear ($ruta) {
	// Ruta al archivo
	$xml = '/home/patoroco/.azureus/Azureus_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, $ruta);

	foreach ($result->nodeset as $nodo) {
		// Recorremos el array volcando el contenido (texto) de los nodos
		$resultado[] = $nodo->get_content();
	}
	return $resultado;
}
?>

Y con esta función, sencillamente habría que saber la "ruta" de etiquetas en el XML, y por ejemplo, para mostrarlo, sería:
$var = parsear('/STATS/GLOBAL/DOWNLOAD_SPEED/TEXT');
echo $var[0];

Muchas gracias de nuevo a Diz, y gracias también a thessoro, por haber sugerido el tratar a los resultados como un array en lugar de como una cadena, ya que para cuando hay varios es mucho más practico.

4 comentarios

  1. Diz — 8 julio 2004 01:48

    :D

    Esperemos que este código ayude a la gente a animarse a usar XML y la tecnología se extienda un poco, porque de momento no lo he visto en muchos sitios y creo que es por desconocimiento de su uso.

    Por cierto, en la línea:

    $resultado .= $nodo->get_content()."n";

    Intuyo que quieres agregar un salto de línea, así que en vez de "n" sería "n", ¿no? Tienes una e-rata (errata electrónica :P). Muy malo, lo sé.

  2. PaToRoCo — 8 julio 2004 10:48

    Uy, gracias por la corrección, lo corrijo ahora mismo :)

  3. Fredinnho — 27 octubre 2008 01:20

    hola a todos! cómo puedo comenzar a aprender a usar XML? necesito parsear algunos datos y pasarlos a este formato.... un saludo

  4. Felipe Hoil Aguilar — 30 marzo 2010 21:01

    Heyy, gracias por la info, no conozco en absoluto nada lo relacionado XML, sigo investigando, si encuentro informacion para sencilla para los novatos regreso y posteo ... gracias de todas la manera. (Mi duda como se crea el archivo .XML)

Los comentarios están cerrados.