Formateador XML

Indenta o minifica un documento XML sin cambiar lo que dice, enteramente en tu navegador.

Se ejecuta enteramente en tu navegador. No se sube, registra ni guarda nada.

Pega un documento XML y léelo. Con sangría, o todo entero de vuelta en una línea, y sin cambiar nada más, porque en XML casi todo lo que a un formateador le gustaría ordenar son datos.

Cómo funciona

Un formateador de HTML puede indentar con libertad entre elementos de bloque, porque ahí un navegador no representa ningún espacio en blanco. El XML no tiene elementos de bloque ni elementos en línea. No sabe lo que significa ninguno de tus elementos, y el espacio en blanco dentro de un elemento que contiene texto forma parte de ese texto.

Así que la regla de aquí es estrecha, y es toda la herramienta: un elemento se vuelve a indentar solo cuando contiene otro elemento y ningún texto propio. Todo lo demás —texto, contenido mixto, CDATA, una hoja que solo contiene espacios, un elemento marcado con xml:space="preserve"— vuelve byte a byte.

Dentro de una etiqueta de apertura el espacio en blanco no es nunca un dato, así que las series de espacios entre atributos se reducen a uno. Lo que está dentro de las comillas se deja tal cual. Los atributos no se reordenan, no se renombran y no se vuelven a entrecomillar.

Las etiquetas tienen que estar equilibradas antes de que pase nada de esto. Un documento cuya etiqueta de cierre no coincide, o que abre un elemento y no lo cierra nunca, se rechaza en lugar de ordenarse: un formateador que indenta un marcado roto devuelve algo que parece correcto y está mal de una forma nueva.

Ejemplos

Caso Entrada Resultado
El contenido mixto se deja exactamente como está <p>Paper <em>and</em> cloth.</p> <p>Paper <em>and</em> cloth.</p>
Una hoja que contiene espacios los conserva <value> </value> <value> </value>
Los atributos quedan con un espacio entre ellos <a b="1" c="2"/> <a b="1" c="2"/>

Preguntas frecuentes

¿Por qué me ha vuelto el documento en una sola línea?

Porque su elemento raíz contiene texto además de elementos. Eso es contenido mixto, y el espacio en blanco que hay en él son datos: indentar insertaría caracteres que tu documento no tenía. El formateador está funcionando: lo que hace es negarse a editar tu contenido para dejarlo más bonito.

¿Comprueba mi XML contra un esquema?

No. Comprueba que las etiquetas estén equilibradas, que es lo que necesita para poder indentar algo, y nada más. Para comprobar un documento contra un XSD, usa el validador XML.

¿Sale algo de mi navegador?

No. El formateador es JavaScript ejecutándose en tu máquina; el documento no se envía nunca a ninguna parte, que es la única disposición sensata para un archivo que pegas para cambiarle los espacios en blanco.

¿Por qué mis atributos no van en líneas separadas?

Porque una etiqueta de apertura no tiene anidamiento que mostrar. Partir una en varias líneas es cuestión de gusto y no de estructura, y este formateador solo hace las cosas que tienen una única respuesta correcta.

¿Qué elimina el modo «en una línea»?

Solo el espacio en blanco entre elementos, en los mismos sitios donde la indentación lo habría añadido. El texto, el CDATA y los comentarios no se tocan, así que el documento sigue diciendo exactamente lo que decía.

Conviene saber

  • Una pasada de disposición, no un analizador. Los espacios de nombres no se resuelven, las entidades no se expanden, ningún valor se normaliza y no se comprueba nada contra un esquema.
  • La codificación es la de tu navegador. La declaración del principio del documento se arrastra sin cambios, diga lo que diga.

Todas las herramientas de Código