Parsear XML con PHP

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

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:

  1.  
  2. < ?php
  3. function parsear ($ruta) {
  4. // Ruta al archivo
  5. $xml = '/home/patoroco/.azureus/Azureus_Stats.xml';
  6.  
  7. // Creamos el objeto DOM
  8. $xmldoc = domxml_open_file($xml);
  9.  
  10. // Creamos un contexto en este documento para la consulta XPath
  11. $xpctx = $xmldoc->xpath_new_context();
  12.  
  13. // Ejecutamos la consulta XPath en el contexto creado y recogemos el resultado
  14. $result = xpath_eval($xpctx, $ruta);
  15.  
  16. foreach ($result->nodeset as $nodo) {
  17. // Recorremos el array volcando el contenido (texto) de los nodos
  18. $resultado[] = $nodo->get_content();
  19. }
  20. return $resultado;
  21. }
  22. ?>

Y con esta función, sencillamente habría que saber la "ruta" de etiquetas en el XML, y por ejemplo, para mostrarlo, sería:

  1. $var = parsear('/STATS/GLOBAL/DOWNLOAD_SPEED/TEXT');
  2. 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.

Comentarios