Generar XML en PHP con XMLWriter

Vamos a usar la librería XMLWriter que incorpora PHP para generar contenido XML a partir de PHP.
$xml = new XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->setIndentString('	'); 
$xml->startDocument('1.0', 'UTF-8');
 
$xml->startElement("colegio"); //elemento colegio
   $xml->writeAttribute('Ciudad', 'Valencia');
   $xml->writeAttribute('Municipio', 'Puerto de Sagunto');
   $xml->writeAttribute('Nombre', 'Maestro Tarrazona');
 
   $xml->startElement("director"); //elemento director
   $xml->writeAttribute('edad', '38');
   $xml->text('Nombre del director');
   $xml->endElement(); //fin director
 
   $xml->startElement("curso"); //elemento curso
      $xml->writeAttribute('nivel', '4');
      $xml->writeElement("aulas", 3);
      $xml->writeElement("profesores", "4");
      $xml->writeElement("alumnos", "70");
      $xml->writeElement("profesores de refuerzo", 1);
 
      $xml->startElement("profesores"); //elemento profesores
         $xml->writeElement("nombre", "Nombre inventado 1");
         $xml->writeElement("nombre", "Nombre inventado 2");
         $xml->writeElement("nombre", "Nombre inventado 3");
         $xml->writeElement("nombre", "Nombre inventado 4");
      $xml->endElement(); //fin elemento profesores
 
      $xml->startElement("alumnos"); //elemento alumnos
         $xml->startElement("clase"); //elemento responsable
            $xml->writeAttribute('id', "Clase A");
            $xml->startElement("alumno"); //elemento alumno
               $xml->writeAttribute('dni', "xxxxxxxx-P");
               $xml->writeElement("Nombre", "Alumno nombre 1");
               $xml->writeElement("genero", "Masculino");
            $xml->endElement(); //fin alumno
 
            $xml->startElement("alumno"); //elemento alumno
               $xml->writeAttribute('dni', "xxxxxxxx-S");
               $xml->writeElement("Nombre", "Alumna nombre 1");
               $xml->writeElement("genero", "Femenino");
            $xml->endElement(); //fin alumno					
         $xml->endElement(); //fin clase
 
         $xml->startElement("clase"); //elemento responsable
            $xml->writeAttribute('id', "Clase B");
            $xml->startElement("alumno"); //elemento alumno
               $xml->writeAttribute('dni', "xxxxxxxx-Z");
               $xml->writeElement("Nombre", "Alumno nombre 3");
               $xml->writeElement("genero", "Masculino");
            $xml->endElement(); //fin alumno
         $xml->endElement(); //fin clase
      $xml->endElement(); //fin elemento alumnos
   $xml->endElement(); //fin curso
$xml->endElement(); //fin colegio
 
$content = $xml->outputMemory();
ob_end_clean();
ob_start();
header('Content-Type: application/xml; charset=UTF-8');
header('Content-Encoding: UTF-8');
header("Content-Disposition: attachment;filename=ejemplo.xml");
header('Expires: 0');
header('Pragma: cache');
header('Cache-Control: private');
echo $content;
El resultado al ejecutar el código anterior es la generación de un documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<colegio Ciudad="Valencia" Municipio="Puerto de Sagunto" Nombre="Maestro Tarrazona">
   <director edad="38">Nombre del director</director>
   <curso nivel="4">
   <aulas>3</aulas>
   <profesores>4</profesores>
    <alumnos>70</alumnos>
    <profesores>
       <nombre>Nombre inventado 1</nombre>
       <nombre>Nombre inventado 2</nombre>
       <nombre>Nombre inventado 3</nombre>
       <nombre>Nombre inventado 4</nombre>
    </profesores>
    <alumnos>
       <clase id="Clase A">
          <alumno dni="xxxxxxxx-P">
             <Nombre>Alumno nombre 1</Nombre>
	     <genero>Masculino</genero>
	   </alumno>
	   <alumno dni="xxxxxxxx-S">
	      <Nombre>Alumna nombre 1</Nombre>
	      <genero>Femenino</genero>
	   </alumno>
        </clase>
	<clase id="Clase B">
	   <alumno dni="xxxxxxxx-Z">
	      <Nombre>Alumno nombre 3</Nombre>
	      <genero>Masculino</genero>
	   </alumno>
	</clase>
      </alumnos>
   </curso>
</colegio>

Iván Martínez

Ingeniero Informático apasionado por el mundo del desarrollo WEB. Me gusta caminar por este mundo lleno de tecnologías y día a día aprender cosas nuevas como el doctor Frankenstein ¡dadme cosas para experimentar!

Un comentario en “Generar XML en PHP con XMLWriter

Deja un comentario

Tu dirección de correo electrónico no será publicada.