Ejemplo 1: XML Básico

La estructura fundamental de un documento XML con datos simples

🎯 ¿En qué consiste este ejemplo?

Este ejemplo interactivo genera, en tiempo real, un documento XML válido a partir de los datos que introduzcas en el formulario. Cada vez que añades un libro, PHP construye un nuevo elemento <libro> dentro del elemento raíz <biblioteca> usando la extensión SimpleXML, y te muestra el XML resultante ya formateado. Así puedes ver, paso a paso, cómo cada dato que escribes se traduce en una etiqueta XML.

Añade un libro a la biblioteca

XML generado en tiempo real

✅ 1 libro(s) en el documento Este es el contenido exacto de tu documento XML.
<?xml version="1.0"?>
<biblioteca>
  <libro>
    <titulo>El Quijote</titulo>
    <autor>Miguel de Cervantes</autor>
    <anio>1605</anio>
  </libro>
</biblioteca>

📖 Explicación del Código

Código PHP Completo

<?php
$xml = new SimpleXMLElement('<biblioteca/>');

foreach ($libros as $libro) {
    $nodoLibro = $xml->addChild('libro');
    $nodoLibro->addChild('titulo', $libro['titulo']);
    $nodoLibro->addChild('autor', $libro['autor']);
    $nodoLibro->addChild('anio', $libro['anio']);
}

echo $xml->asXML();
?>

📝 Crear el elemento raíz

$xml = new SimpleXMLElement('<biblioteca/>');

¿Qué hace? Crea un documento XML nuevo cuyo único elemento raíz es <biblioteca>. Todo XML necesita exactamente un elemento raíz que envuelva al resto.

💡 Concepto: SimpleXML

SimpleXML es la forma más sencilla de trabajar con XML en PHP: convierte el documento en un objeto navegable, muy cómodo para lectura y creación básica.

📝 Añadir elementos hijos

$nodoLibro = $xml->addChild('libro');
$nodoLibro->addChild('titulo', $libro['titulo']);

¿Qué hace? addChild() crea un nuevo elemento dentro del nodo sobre el que se llama. Primero creamos <libro> dentro de <biblioteca>, y luego <titulo>, <autor> y <anio> dentro de <libro>.

¿Por qué así? Esta es la esencia de XML: los datos se organizan en una jerarquía de elementos, no en una lista plana.

📝 Exportar el XML

echo $xml->asXML();

¿Qué hace? Convierte el objeto SimpleXML de nuevo a texto XML, incluyendo la declaración <?xml version="1.0"?>. Es lo que este ejemplo formatea y te muestra en pantalla.

🎯 Conceptos Clave Aprendidos

Elemento Raíz

  • Un XML solo puede tener un elemento raíz
  • Todos los demás elementos van dentro de él
  • Aquí es <biblioteca>

Jerarquía de Elementos

  • Cada <libro> es hijo de <biblioteca>
  • <titulo>, <autor> y <anio> son hijos de <libro>
  • La anidación representa relaciones entre datos

SimpleXML en PHP

  • new SimpleXMLElement() crea el documento
  • addChild() añade nodos
  • asXML() exporta el resultado como texto

💪 Ejercicio Práctico

Amplía la biblioteca XML

Prueba estos cambios para reforzar lo aprendido:

  1. Añade 3 libros distintos usando el formulario y observa cómo crece el XML
  2. Piensa qué nuevo campo añadirías (por ejemplo <genero>) y en qué nivel de la jerarquía iría
  3. Escribe a mano, en un papel, el XML equivalente para tu libro favorito
  4. Compara: ¿qué pasaría si <titulo> estuviera fuera de <libro>?

Añadir un campo "género"

$nodoLibro->addChild('titulo', $libro['titulo']);
$nodoLibro->addChild('autor', $libro['autor']);
$nodoLibro->addChild('anio', $libro['anio']);
$nodoLibro->addChild('genero', $libro['genero']); // nuevo campo, mismo nivel que los anteriores

El nuevo campo va al mismo nivel que titulo, autor y anio, porque describe una propiedad más del mismo libro, no de la biblioteca completa.