XML
Concepto de Datos y formatos en Utilidades, conectado con sus herramientas y conceptos vecinos.
Actualizado el 31 de agosto de 2026
XML (eXtensible Markup Language) es un lenguaje de marcado diseñado para almacenar y transportar datos de forma estructurada y legible tanto por personas como por máquinas. A diferencia de HTML, XML no define etiquetas predefinidas: cada proyecto puede definir su propia estructura. Publicado por el W3C en 1998, fue durante años el formato universal de intercambio de datos, rol que hoy comparte —y en muchos contextos ha cedido— a JSON.
Estructura básica de un documento XML
<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<producto id="P001" categoria="electronica">
<nombre>Auriculares Bluetooth</nombre>
<precio moneda="EUR">79.99</precio>
<disponible>true</disponible>
<etiquetas>
<etiqueta>audio</etiqueta>
<etiqueta>inalambrico</etiqueta>
</etiquetas>
</producto>
<producto id="P002" categoria="hogar">
<nombre>Lámpara LED</nombre>
<precio moneda="EUR">24.50</precio>
<disponible>false</disponible>
</producto>
</catalogo>
Un documento XML bien formado debe cumplir estas reglas:
- Un único elemento raíz que contenga a todos los demás.
- Todas las etiquetas cerradas:
<nombre>Valor</nombre>o autocerrante<vacio />. - Atributos entre comillas dobles:
id="P001". - Caracteres reservados escapados:
<→<,>→>,&→&,"→". - Sensible a mayúsculas:
<Nombre>y<nombre>son etiquetas distintas.
Elementos vs. atributos: ¿cuándo usar cada uno?
XML permite representar los mismos datos de dos formas:
<!-- Con atributos -->
<producto id="P001" nombre="Auriculares" precio="79.99" />
<!-- Con elementos hijos -->
<producto>
<id>P001</id>
<nombre>Auriculares</nombre>
<precio>79.99</precio>
</producto>
La convención general: usa atributos para metadatos que identifican o clasifican el elemento (IDs, categorías, unidades de medida), y elementos hijos para el contenido principal que puede tener subestructura o cambiar con frecuencia.
Namespaces: evitar colisiones de nombres
Los namespaces evitan conflictos cuando combinas XML de distintas fuentes. Se declaran con xmlns:
<raiz xmlns:factura="http://empresa.es/factura"
xmlns:envio="http://empresa.es/envio">
<factura:numero>F-2026-0042</factura:numero>
<envio:direccion>Gran Vía 10, Madrid</envio:direccion>
</raiz>
El prefijo (factura:, envio:) asocia cada etiqueta a su namespace. La URI del namespace no tiene que ser una URL real; es solo un identificador único global.
XML frente a JSON y YAML
| Característica | XML | JSON | YAML |
|---|---|---|---|
| Legibilidad | Moderada (muchas etiquetas) | Alta | Muy alta |
| Atributos | Sí (nativo) | No (todo son propiedades) | No |
| Comentarios | Sí (<!-- -->) | No | Sí (#) |
| Namespaces | Sí | No | No |
| Validación de esquema | XSD, DTD, Relax NG | JSON Schema | JSON Schema |
| Transformación | XSLT | — | — |
| Velocidad de parseo | Lenta | Rápida | Media |
| Uso típico | SOAP, Office, SVG, legado | APIs REST | Configuración, DevOps |
¿Dónde se usa XML hoy?
- Microsoft Office y LibreOffice:
.docx,.xlsx,.pptxson archivos ZIP que contienen XML internamente. Puedes renombrar un.docxa.zip, descomprimirlo y editar el XML a mano. - SVG: el formato de gráficos vectoriales escalables es XML. Puedes abrir cualquier
.svgcon un editor de texto y modificar sus atributos directamente. - RSS y Atom: los feeds de noticias y podcasts usan XML. Cada
<item>o<entry>describe un artículo con su título, URL y fecha de publicación. - SOAP: el protocolo de servicios web heredado usa XML para los mensajes de petición y respuesta. Aún domina en banca, seguros y administración pública.
- Android: los layouts de interfaz (
res/layout/*.xml) y elAndroidManifest.xmlestán en XML. - Maven (Java): el
pom.xmldescribe las dependencias y la configuración del proyecto. - Configuración de servidores: Tomcat, Spring y muchos servidores de aplicaciones Java usan XML para su configuración principal.
Conceptos relacionados
Preguntas frecuentes
¿Para qué se usa XML hoy en día?
¿Qué diferencia hay entre XML y HTML?
,
¿Es XML mejor que JSON?
Ver todas las herramientas de Utilidades.