XML Formatter / Validator

Format, minify, and validate XML. Preserves attributes, namespaces, CDATA. Browser-only.

formatters

XML Formatter / Validator

Input
Output

Runs entirely in your browser. Your input never leaves your device.

What next?

How it works

Qué es XML y por qué sigue siendo omnipresente

XML (Extensible Markup Language) fue estandarizado por el W3C en 1998 y se convirtió rápidamente en el formato universal de intercambio de datos estructurados hasta que JSON tomó el control de las API REST. Hoy XML se declara "legado" en conferencias, pero sigue procesando una enorme cantidad de datos reales: servicios SOAP en banca y salud, feeds RSS y Atom, gráficos SVG, OOXML (.docx, .xlsx), layouts de Android, configuraciones de Maven y prácticamente todos los buses de integración empresarial.

Como developer, encontrarás XML con más frecuencia de lo que esperas.

Las reglas de XML que causan más errores

Un parser XML conforme a la especificación está obligado a rechazar input malformado, no a intentar inferir tu intención como hace un parser HTML. Las causas más comunes de fallo:

  1. Tags sin cerrar. Todo tag de apertura necesita su tag de cierre o debe ser self-closing: <br/>. A diferencia de HTML, <br> no es válido en XML.
  2. Sensibilidad a mayúsculas. <Item> e <item> son elementos distintos. Mezclarlos invalida el documento.
  3. Solo un elemento raíz. Un documento XML válido tiene exactamente un elemento de nivel superior.
  4. Los valores de atributos deben ir entre comillas. <img width=300> es notación HTML; en XML debe ser width="300".
  5. Caracteres reservados en el contenido. Los caracteres <, > y & en texto deben escaparse como &lt;, &gt; y &amp;, o bien envolverse en una sección CDATA.

Namespaces — la mayor fuente de confusión

Los namespaces de XML permiten que distintos vocabularios coexistan en un documento sin colisiones de nombres. Un namespace es un URI vinculado a un prefijo:

<root xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Envelope>
    <soap:Body xsi:type="xs:string">Hola</soap:Body>
  </soap:Envelope>
</root>

El URI es solo un identificador único — no necesita resolver a nada real. Un formatter que no entiende namespaces puede reordenar atributos de forma que rompa los bindings. Esta herramienta preserva todas las declaraciones de namespace exactamente como están escritas.

Secciones CDATA

Una sección CDATA indica al parser que trate todo su contenido como datos de carácter literal, no como marcado:

<script><![CDATA[
  if (a < b && c > d) {
    hacerAlgo();
  }
]]></script>

Sin CDATA, esos <, > y & necesitarían escaparse. CDATA es útil para incrustar fragmentos HTML, JavaScript o SQL dentro de XML. La única cadena que no puede aparecer dentro de CDATA es ]]> (el delimitador de cierre).

Comentarios e instrucciones de procesamiento

Los comentarios XML <!-- así --> son semánticamente inertes — los parsers pueden descartarlos. Esta herramienta usa fast-xml-parser con preservación de comentarios habilitada, por lo que los nodos de comentario sobreviven al reformateo.

Las instrucciones de procesamiento <?xml-stylesheet type="text/xsl" href="style.xsl"?> son directivas para la aplicación consumidora. Incluye siempre la declaración XML <?xml version="1.0" encoding="UTF-8"?> cuando el documento pueda contener caracteres no ASCII.

Self-closing tags y orden de atributos

Los self-closing tags (<element/>) y su equivalente de dos tokens (<element></element>) son semánticamente idénticos. El formatter normaliza los elementos vacíos cortos a forma self-closing. El orden de los atributos no tiene significado semántico según la especificación, pero esta herramienta preserva el orden original para evitar sorpresas en workflows que comparan la posición de atributos.

Pretty-print vs minificar

Pretty-print añade indentación y saltos de línea para que la estructura sea legible. Úsalo para:

  • Control de versiones (los diffs se vuelven comprensibles)
  • Depurar envelopes SOAP y respuestas de API
  • Editar archivos de configuración manualmente

Minificar elimina todos los espacios en blanco no significativos. Úsalo para:

  • Transmisión en entornos con ancho de banda limitado
  • Reducir el tamaño de almacenamiento en archivos XML grandes

Importante: el espacio en blanco dentro de <![CDATA[…]]> o en elementos de contenido mixto es significativo y no debe eliminarse. El formatter respeta esto.

Cuándo XML sigue siendo mejor que JSON

  • Servicios SOAP: sistemas financieros, gubernamentales y de salud suelen exigir SOAP. No hay equivalente JSON.
  • Feeds RSS/Atom: todo el ecosistema de sindicación sigue siendo XML.
  • SVG: los gráficos vectoriales escalables son XML — puedes formatear un archivo SVG exactamente igual que cualquier XML.
  • OOXML: los archivos .docx y .xlsx son ZIPs que contienen XML.
  • Modelos de documento complejos: el contenido mixto, los namespaces y los esquemas XSD manejan escenarios que el modelo clave-valor plano de JSON no cubre bien.

Rendimiento y límite de tamaño

El formatter se ejecuta completamente en tu navegador. Inputs de hasta 5 MB se procesan cómodamente en la mayoría de navegadores modernos. Para archivos más grandes, xmllint --format en la línea de comandos es más eficiente.

Privacidad

Todo el procesamiento es local — tu XML nunca sale del navegador. Puedes verificarlo en la pestaña Network de las DevTools.

FAQ

¿Por qué falla el parseo de mi XML si parece correcto?

Los parsers XML conformes a la especificación deben rechazar input malformado en lugar de intentar interpretarlo. Las causas más comunes: un & o < sin escapar en el contenido de texto (usa &amp; y &lt;), un tag sin cerrar, diferencia de mayúsculas entre el tag de apertura y el de cierre (XML distingue mayúsculas), o más de un elemento raíz. El mensaje de error incluye número de línea y columna; ve a esa posición primero.

¿El formatter preserva los comentarios XML?

Sí. Esta herramienta usa fast-xml-parser con preservación de comentarios habilitada, por lo que los nodos <!-- tu comentario --> sobreviven al reformateo. Algunas bibliotecas XML descartan comentarios por ser semánticamente inertes — si los comentarios son importantes para tu workflow, verifica también con tu parser downstream.

¿Reformatear cambia el significado del XML?

Para contenido solo de elementos, no. El espacio en blanco entre elementos no es significativo según la especificación, por lo que añadir o quitar indentación es seguro. La excepción es el contenido mixto — elementos que contienen tanto elementos hijo como nodos de texto. En <p>Hola <b>mundo</b></p>, el espacio antes de <b> es significativo y se preserva tal cual.

¿Qué son los namespaces y por qué importan?

Los namespaces permiten que distintos vocabularios XML coexistan sin colisiones de nombres. Un prefijo como soap: o xsi: se vincula a un URI mediante un atributo xmlns:. El formatter preserva todas las declaraciones de namespace y sus bindings exactamente — reordenarlos o eliminarlos rompería queries XPath y parsers que dependen del nombre expandido.

¿Puedo formatear archivos SVG con esta herramienta?

Sí. SVG es XML, así que el formatter lo maneja correctamente. Pega el fuente SVG, elige el ancho de indentación y haz clic en formatear. Es muy útil para hacer que los SVGs editados a mano sean legibles en diffs antes de subirlos a control de versiones.

¿Qué es una sección CDATA y cuándo debo usarla?

<![CDATA[…]]> envuelve datos de carácter literal que no deben parsearse como marcado. Úsala cuando necesites incrustar fragmentos HTML, SQL o código que contiene <, > o & sin tener que escapar cada carácter. La única secuencia que no puede aparecer dentro de CDATA es ]]>. El formatter preserva las secciones CDATA intactas.

¿Hay un límite de tamaño de archivo?

La herramienta se ejecuta completamente en tu navegador, así que los límites prácticos dependen de tu dispositivo. Hasta ~5 MB funciona bien en la mayoría de navegadores modernos. Archivos más grandes pueden causar una pausa de varios segundos. Para archivos de más de 10 MB, xmllint --format en la línea de comandos es más rápido.

Mi documento tiene <?xml version="1.0"?> al principio — ¿es obligatorio?

La declaración XML es opcional para documentos codificados en UTF-8 o UTF-16 con BOM. En la práctica, inclúyela siempre cuando el documento contenga caracteres no ASCII y pueda ser procesado por parsers estrictos — elimina la ambigüedad sobre el encoding y la versión XML.