Generar XML a partir de SQL utilizando PHP

   Anteriormente había publicado en "esta entrada" como generar un XML utilizando PHP, sin embargo esto no es muy útil si no disponemos de un contenido dinámico al cual queramos acceder, es por ello que en esta entrada explicare como agregar y modificar un poco el "ejemplo anterior" para crear un archivo dinámico a partir de una consulta SQL.

   Lo primero es conectarnos con el servidor MySQL, la forma práctica de hacerlo es utilizando la librería MySQLi.
$bd = new mysqli('localhost', 'usuario_sql', 'clave_sql', 'bd_sql') or die("Error al conectar con MySQL-> ".mysql_error());
   Lo siguiente será modificar el script para hacer la consulta y almacenar los datos, como ya se ha explicado muchas veces como se hacen consultas SQL y manipulan datos en el blog, simplemente expondré el código:
<?php
  crear(); //Creamos el archivo
  leer();  //Luego lo leemos
  
  //Para crear el archivo
  function crear(){
      $bd = new mysqli('localhost', 'usuario_sql', 'clave_sql', 'bd_sql') or die("Error al conectar con MySQL-> ".mysql_error());
   
       $stmt = $bd->prepare("SELECT autor, titulo, anio, editorial FROM libros");
       $stmt->execute();
       $stmt->store_result();
       $stmt->bind_result($autor, $titulo, $anio, $editorial); 
 
       $xml = new DomDocument('1.0', 'UTF-8');
 
      $biblioteca = $xml->createElement('biblioteca');
      $biblioteca = $xml->appendChild($biblioteca);
 
      while($stmt->fetch()) {
    
        $libro = $xml->createElement('libro');
        $libro = $biblioteca->appendChild($libro);

        $nodo_autor = $xml->createElement('autor', $autor);
        $nodo_autor = $libro->appendChild($nodo_autor);
        $nodo_titulo = $xml->createElement('titulo', $titulo);
        $nodo_titulo = $libro->appendChild($nodo_titulo);
        $nodo_anio = $xml->createElement('anio', $anio);
        $nodo_anio = $libro->appendChild($nodo_anio);
        $nodo_editorial = $xml->createElement('editorial', $editorial);
        $nodo_editorial = $libro->appendChild($nodo_editorial);
       }
   
       $stmt->free();
       $bd->close();
   
      $xml->formatOutput = true;
      $el_xml = $xml->saveXML();
      $xml->save('libros.xml');
     
      //Mostramos el XML puro
      echo "<p><b>El XML ha sido creado.... Mostrando en texto plano:</b></p>".
           htmlentities($el_xml)."<br/><hr>";
  }
 
  //Para leerlo
  function leer(){
    echo "<p><b>Ahora mostrandolo con estilo</b></p>";
 
    $xml = simplexml_load_file('libros.xml');
    $salida ="";
 
    foreach($xml->libro as $item){
      $salida .=
        "<b>Autor:</b> " . $item->autor . "<br/>".
        "<b>Título:</b> " . $item->titulo . "<br/>".
        "<b>Ano:</b> " . $item->anio . "<br/>".
        "<b>Editorial:</b> " . $item->editorial . "<br/><hr/>";
    }
 
    echo $salida;
  }
?>
   Y listo, ya con esto tenemos un XML que se genera a partir de un contenido que podemos modificar dinámicamente desde cualquier otra aplicación o programa, que es la idea...!!!


2 Comentarios

Escribir Comentario
Unknown
AUTOR
7 de marzo de 2019, 19:56 delete

Muchas Gracias, Me servicio bastante para poder usarlo en el API de google maps, muy bien explicado y entendible. Sigo muchos de tus aportes, sigue haci

Responder
avatar
PC Cheap
AUTOR
9 de julio de 2019, 16:16 delete

Genial gracias por el aporte

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión