Comunidad de diseño web y desarrollo en internet

Crear un archivo XML con un resultado de MySQL en PHP

En este tip les mostraré una función para que puedan pasar cualquier resultado de MySQL a un archivo XML.

Funcionaría de la siguiente forma:

Código :

// forma simplificada
$resultado = mysql_query('SELECT * FROM tabla');

header ('Content-type: text/xml');
echo mysql_XML($resultado);

// se puede personalizar el nombre del documento y de cada item asi:
echo mysql_XML($resultado, 'nombre del documento', 'nombre de cada item');


la funcion es la siguiente:

Código :

/*
 * Funcion para transformar un resultado de mysql en un archivo XML
 **/
function mysql_XML($resultado, $nombreDoc='resultados', $nombreItem='item') {
   $campo = array();
   
   // llenamos el array de nombres de campos
   for ($i=0; $i<mysql_num_fields($resultado); $i++)
      $campo[$i] = mysql_field_name($resultado, $i);
   
   // creamos el documento XML   
   $dom = new DOMDocument('1.0', 'UTF-8');
   $doc = $dom->appendChild($dom->createElement($nombreDoc));
   
   // recorremos el resultado
   for ($i=0; $i<mysql_num_rows($resultado); $i++) {
      
      // creamos el item
      $nodo = $doc->appendChild($dom->createElement($nombreItem));
      
      // agregamos los campos que corresponden
      for ($b=0; $b<count($campo); $b++) {
         $campoTexto = $nodo->appendChild($dom->createElement($campo[$b]));
         $campoTexto->appendChild($dom->createTextNode(mysql_result($resultado, $i, $b)));
      }
   }
   
   // retornamos el archivo XML como cadena de texto
   $dom->formatOutput = true; 
   return $dom->saveXML();    
}


Si quieren pueden descargar el archivo con la función listo para ser importado.

Saludos!

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate