Formatear XML
Convierte un bloque de XML ilegible en algo que se puede leer, o vuelve a minificarlo. Los comentarios, las secciones CDATA y los espacios de nombres se conservan intactos. No se guarda nada.
- Nunca se guarda
- Sin filas ni esperas
- Sin registro, sin marca de agua
El XML formateado aparece aquí.
Cómo funciona
Pega tu XML
O suelta un archivo .xml, .svg, .rss o .xsd. Nunca se guarda.
Elige la sangría
Dos espacios, cuatro, tabulaciones o minificado en una sola línea.
Copia o descarga
Si el XML está roto, obtienes la línea y la columna en lugar de un resultado.
Por qué cambiar la sangría de un XML es más arriesgado de lo que parece
En XML, los espacios en blanco son significativos por defecto, y esto es lo que sorprende a la gente. A diferencia de JSON, donde el formato no tiene coste, un analizador de XML está obligado a informar de los espacios y saltos de línea entre elementos como contenido de texto: es el esquema, si lo hay, el que indica que se pueden ignorar. Así que cambiar la sangría de un documento lo modifica de verdad; en la mayoría de los archivos de configuración y de datos eso no le importa a nadie, pero en documentos con contenido mixto (texto y elementos juntos, como en XHTML o DocBook) puede alterar lo que dice el documento.
Por eso, al formatear aquí se deja intacto lo que debe quedar intacto. Un elemento con xml:space="preserve" conserva su contenido exactamente como está escrito, porque ese atributo existe justamente para indicarlo. Las secciones CDATA pasan sin tocarse: existen para contener texto que no debe interpretarse, y reformatear su interior lo corrompería. Las referencias a entidades se quedan como referencias, sin expandirse en los caracteres que representan.
Los espacios de nombres se conservan exactamente como están escritos: prefijos, declaraciones y los elementos a los que están vinculados. Parece obvio y no lo es: un formateador que normaliza los prefijos, o que mueve las declaraciones adonde cree que deben ir, produce un documento técnicamente equivalente que falla con herramientas que comparan los prefijos literales. También se mantiene el orden de los atributos, aunque para XML no tenga significado, por la misma razón: un diff contra la versión anterior vale más que la prolijidad.
Lo que se comprueba al formatear es que el XML esté bien formado: todas las etiquetas cerradas, bien anidadas, un solo elemento raíz, caracteres válidos, y los signos & y los corchetes angulares correctamente escapados. Es el más bajo de los dos niveles de XML. Un documento puede estar perfectamente bien formado y aun así no ser válido según la DTD o el esquema que lo rige, y eso no lo revela ningún formateo.
Si buscas otra cosa
xmllint --format in.xml hace lo mismo en la línea de comandos y ya viene instalado en la mayoría de los sistemas Unix; xmlstarlet fo --indent-tab da más control sobre la propia sangría. Ambos manejan archivos mucho más grandes de lo que una página puede mantener en memoria.
Cuando el documento tiene que compararse, firmarse o almacenarse en forma canónica, formatear es justamente la operación equivocada. XML canónico (xmllint --c14n) produce la única forma normalizada a la que se reducen dos documentos equivalentes, y de eso dependen las firmas digitales sobre XML. Embellecer un documento firmado rompe su firma, y esa es la forma más cara de aprenderlo.
Preguntas frecuentes
¿Se guarda mi XML en algún lugar?
No. No hay llamadas al servidor ni registros, y no se guarda nada. Puedes desconectarte de internet después de que cargue la página y sigue funcionando. Aquí eso importa más de lo que parece: lo que la gente pega en un formateador en línea son respuestas de API, archivos de configuración y mensajes de error, y es habitual que contengan tokens, datos de clientes y nombres de servidores internos.
¿Qué se conserva al formatear?
Los comentarios, las secciones CDATA, las instrucciones de procesamiento, la declaración XML y todos los prefijos de espacios de nombres. El orden de los atributos se mantiene tal como está escrito. Un elemento que solo contiene texto se queda en una línea, porque partir <title>Hello</title> en tres líneas no lo hace más bonito, y en un documento con contenido mixto cambiaría lo que el texto dice realmente.
¿Cambiar la sangría altera el significado de mi XML?
En un elemento que solo contiene otros elementos, no. Pero XML no tiene una regla general que diga que los espacios en blanco son irrelevantes: en el contenido mixto, donde texto y elementos van juntos, el espacio agregado SÍ forma parte del texto. Por eso aquí los elementos que solo tienen texto se dejan en una línea en lugar de partirlos. Si tu documento tiene contenido mixto real y los espacios le importan, minificar es la operación más segura.
¿Funciona con HTML?
Solo si el HTML es XML bien formado, y la mayor parte del HTML real no lo es. Las etiquetas <br>, <img> y <li> sin cerrar, los atributos sin comillas y los signos & sueltos son HTML válido y XML inválido. El analizador de esta página es un analizador de XML estricto, así que los señala como errores en lugar de adivinar. XHTML y SVG se formatean perfectamente.
¿Y con SVG?
Sí: SVG es XML, y esta es una buena forma de leer uno minificado. Los trazados, los degradados y los estilos incrustados pasan sin cambios; solo se mueven los espacios en blanco entre elementos.
¿Hay un límite de tamaño?
La memoria disponible, no un tope que impongamos nosotros. Los documentos de unos pocos megabytes se formatean al instante; los muy grandes están limitados por cuánto se puede mantener en memoria a la vez, no por nada de nuestra parte.
Conviene saber: Solo se comprueba que esté bien formado. Se revisa que las etiquetas estén equilibradas, bien anidadas y con caracteres válidos, y se vuelve a aplicar la sangría, pero no se descarga ni se aplica ninguna DTD o XSD, así que un archivo puede formatearse sin problemas y aun así no ser válido según su esquema. Los espacios de nombres se conservan exactamente como están escritos.
Agrega esta herramienta a tu sitio web
Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.
Más Herramientas para desarrolladores
Validar XML
Descubre exactamente dónde falla tu XML
Formatear JSON
Convierte un JSON ilegible en uno legible
Validar JSON
Descubre exactamente dónde falla tu JSON
Decodificar Base64
Convierte Base64 de nuevo en texto o en un archivo
Codificar Base64
Convierte texto o un archivo a Base64
Decodificar JWT
Lee el contenido de un token de forma privada