ToolDeck

Formateador de XML

Formatea y embellece XML con resaltado de sintaxis

Prueba un ejemplo

Entrada XML

XML formateado

Se ejecuta localmente · Es seguro pegar secretos
El XML formateado aparecerá aquí…

¿Qué es el formateo de XML?

El formateo de XML (también llamado pretty-printing o embellecimiento de XML) es el proceso de añadir indentación y saltos de línea consistentes a un documento XML para que su estructura jerárquica sea visible. El XML en bruto que devuelven las APIs, los generadores de configuración o los serializadores suele entregarse como una sola línea sin espacios en blanco entre las etiquetas. Un formateador de XML analiza ese documento como un árbol y lo vuelve a serializar con un espaciado predecible. El resultado es visualmente claro y mucho más fácil de comprender, sin que el contenido lógico del documento cambie en absoluto.

La especificación XML 1.0 (Recomendación W3C, quinta edición) define una gramática estricta en la que cada etiqueta de apertura debe tener su correspondiente etiqueta de cierre o ser auto-cerrada, los atributos deben ir entre comillas, y cinco caracteres (<, >, &, ", ') requieren escape mediante entidades. Un formateador debe respetar estas reglas mientras inserta únicamente espacios en blanco insignificantes que no alteren el conjunto de información (infoset) del documento.

El XML formateado es más fácil de leer durante las revisiones de código, más fácil de comparar en el control de versiones y más fácil de depurar cuando un servicio devuelve datos inesperados. La operación de formateo es sin pérdida: el contenido lógico del documento permanece idéntico, solo cambia la presentación. Herramientas como git diff y las plataformas de revisión de pull requests muestran solo las líneas modificadas — un XML con indentación consistente garantiza que esas diferencias reflejen cambios reales, no ruido de reformateo.

Before · xml
After · xml
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date></book></catalog>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
  </book>
</catalog>

¿Por qué usar un formateador de XML online?

Formatear XML a mano es propenso a errores y lento, especialmente en documentos con anidamiento profundo o espacios de nombres mezclados. Un formateador en el navegador te da el resultado formateado en menos de un segundo, independientemente del tamaño del archivo. A diferencia de las herramientas de escritorio o las utilidades de línea de comandos, no requiere instalación ni configuración previa: simplemente abre la página y comienza a trabajar de inmediato.

Pretty-print instantáneo
Pega o escribe XML y obtén la salida indentada de inmediato. Sin esperar a instalar una herramienta de línea de comandos ni ejecutar un paso de compilación.
🔒
Procesamiento con privacidad primero
Todo el análisis y formateo ocurre en tu navegador mediante la API DOMParser. Tu XML nunca abandona tu máquina y nunca se envía a ningún servidor.
🎨
Indentación configurable
Elige entre indentación de 2 espacios, 4 espacios o tabuladores para adaptarte a los estándares de codificación de tu proyecto sin editar archivos de configuración.
📋
Sin cuenta ni instalación requerida
Abre la página, pega tu XML y copia el resultado. Sin formularios de registro, sin software de escritorio, sin extensiones del navegador.

Casos de uso del Formateador de XML

Desarrollo frontend
Inspecciona marcado SVG o fragmentos XHTML devueltos por un CMS. Formatear la salida en bruto te permite localizar atributos específicos y grupos anidados rápidamente.
Ingeniería backend
Depura respuestas SOAP, feeds RSS o payloads XML-RPC de servicios de terceros. La salida formateada te permite rastrear elementos faltantes o espacios de nombres incorrectos.
DevOps y CI/CD
Lee archivos Maven pom.xml, scripts de Ant o archivos de proyecto .csproj que han sido generados automáticamente sin indentación. Fórmalos antes de hacer commit para mantener los diffs limpios.
QA y pruebas
Compara payloads XML esperados vs. reales en pruebas de integración. Formatear ambos lados con el mismo estilo de indentación elimina falsos negativos causados por diferencias de espacios en blanco.
Ingeniería de datos
Inspecciona exportaciones XML de bases de datos, pipelines ETL o portales de datos abiertos gubernamentales. El XML formateado revela la estructura de los registros antes de escribir una transformación XSLT o una consulta XPath.
Aprendiendo XML
Los estudiantes que trabajan con los tutoriales XML del W3C pueden pegar los archivos de ejercicios en el formateador para verificar que su anidamiento y sintaxis de atributos son correctos.

Referencia de entidades predefinidas de XML

XML reserva cinco caracteres para su sintaxis. Cuando estos caracteres aparecen como contenido de texto literal o valores de atributos, deben reemplazarse con referencias a entidades predefinidas. Un formateador correcto preserva estas entidades durante el pretty-printing.

CarácterFunción en XMLEntidad
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

Estilos de indentación XML comparados

No existe un estándar único para la indentación XML. La elección depende de las convenciones de tu equipo y las herramientas de tu pipeline. Estos son los tres estilos más comunes.

2 espacios (recomendado)
La opción más común para XML relacionado con la web: SVG, XHTML, SOAP, configuración de Spring. Mantiene compactos los documentos con anidamiento profundo. Usado por defecto en la mayoría de los formateadores online y los IDEs.
4 espacios
Preferido en los ecosistemas Java (Maven, Ant, manifiestos Android) donde los archivos raramente superan 3-4 niveles de anidamiento. Coincide con la indentación predeterminada del código Java y C#.
Carácter de tabulación
Permite a cada desarrollador establecer su propio ancho visual en su editor. Común en proyectos heredados y algunas herramientas de Microsoft (.csproj, .nuspec). Produce archivos más pequeños que los espacios.

Ejemplos de código: Formatear XML por programa

Cuando necesitas formatear XML dentro de un script o proceso de compilación, cada lenguaje principal tiene una opción integrada o de biblioteca estándar. A continuación hay ejemplos funcionales que puedes copiar directamente.

JavaScript (DOM API)
const raw = '<root><item>hello</item></root>'
const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')
const serializer = new XMLSerializer()
const xml = serializer.serializeToString(doc)

// Indent with XSLT (browser-native approach)
const xslt = new DOMParser().parseFromString(`
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="node()|@*">
      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
    </xsl:template>
  </xsl:stylesheet>`, 'application/xml')

const proc = new XSLTProcessor()
proc.importStylesheet(xslt)
const formatted = proc.transformToDocument(doc)
console.log(new XMLSerializer().serializeToString(formatted))
// → <root>\n  <item>hello</item>\n</root>
Python
import xml.dom.minidom

raw = '<root><item>hello</item><item>world</item></root>'
dom = xml.dom.minidom.parseString(raw)
print(dom.toprettyxml(indent='  '))
# → <?xml version="1.0" ?>
# → <root>
# →   <item>hello</item>
# →   <item>world</item>
# → </root>

# With lxml (handles namespaces, XSD, large files)
from lxml import etree
tree = etree.fromstring(raw.encode())
print(etree.tostring(tree, pretty_print=True).decode())
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func formatXML(raw string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    encoder.Indent("", "  ")
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// formatXML("<a><b>1</b></a>") → "<a>\n  <b>1</b>\n</a>"
CLI (xmllint)
# Format XML file with xmllint (part of libxml2, pre-installed on macOS/Linux)
xmllint --format input.xml > formatted.xml

# Format from stdin
echo '<a><b>1</b></a>' | xmllint --format -
# → <?xml version="1.0"?>
# → <a>
# →   <b>1</b>
# → </a>

# Validate and format at the same time
xmllint --format --schema schema.xsd input.xml

Preguntas frecuentes

¿El formateo de XML cambia el significado del documento?
No. El formateo de XML solo añade o elimina espacios en blanco insignificantes entre etiquetas. El Conjunto de Información XML (infoset) permanece idéntico. Una excepción: si tu esquema usa xml:space="preserve" en ciertos elementos, un formateador debería dejar esos elementos intactos, y esta herramienta lo respeta.
¿Cuál es la diferencia entre formateo y validación de XML?
El formateo añade indentación y saltos de línea para hacer el XML legible. La validación comprueba si el documento se ajusta a un esquema (XSD, DTD o RelaxNG). Un documento puede estar bien formado pero ser inválido respecto a su esquema. Usa este formateador para la legibilidad y la herramienta XML Validator para la conformidad con el esquema.
¿Puedo formatear XML con espacios de nombres?
Sí. El DOMParser del navegador maneja los espacios de nombres XML de forma nativa. Los prefijos de espacio de nombres, las declaraciones de espacio de nombres predeterminado (xmlns) y los nombres de atributos cualificados se preservan durante el formateo. El formateador no añade, elimina ni renombra ningún enlace de espacio de nombres.
¿Qué tamaño de archivo XML puedo formatear en el navegador?
El formateo en el navegador funciona bien para documentos de hasta aproximadamente 10 MB. Por encima de ese tamaño, el árbol DOM consume memoria significativa y la interfaz puede volverse poco responsiva. Para archivos muy grandes, usa una herramienta de línea de comandos como xmllint --format, que procesa XML como un flujo.
¿Por qué mi XML formateado tiene una declaración XML añadida?
Algunos formateadores añaden <?xml version="1.0"?> al serializar el árbol DOM. Esta declaración es opcional en XML 1.0 cuando la codificación es UTF-8. Si no la quieres, elimina la primera línea de la salida. La declaración no afecta al análisis por ningún procesador XML que cumpla con el estándar.
¿Es el formateo de XML lo mismo que la minificación de XML?
Son operaciones opuestas. El formateo añade espacios en blanco para mejorar la legibilidad. La minificación elimina todos los espacios en blanco no esenciales para reducir el tamaño del archivo. Ambas operaciones son sin pérdida respecto al infoset XML. Si necesitas minificar XML, usa la herramienta XML Minifier.
¿Cuál es la diferencia entre formatear XML y HTML?
XML es estricto: cada etiqueta debe cerrarse, los valores de atributos deben ir entre comillas y el documento debe tener exactamente un elemento raíz. HTML (específicamente HTML5) es permisivo: las etiquetas de cierre opcionales, los atributos sin comillas y los elementos vacíos como &lt;br&gt; son todos válidos. Un formateador XML rechazará XML inválido, mientras que un formateador HTML tolera sintaxis que XML no permitiría.