Formateador XML

Pega XML y se maqueta solo: el texto y los atributos quedan intactos.

Cómo se usa

  1. Pega tu XML en la caja: se formatea mientras escribes, sin ningún botón que pulsar.
  2. Elige Formatear o Minificar y 2 o 4 espacios de sangría; el resultado se actualiza al instante.
  3. Si la estructura está rota, el mensaje indica la línea, la columna y el elemento. Copia el resultado o descárgalo como archivo .xml.

Ejemplo

Entrada

<?xml version="1.0" encoding="UTF-8"?><pedido id="A-1042"><cliente><nombre>Ada Lovelace</nombre><correo>ada@example.com</correo></cliente><articulos><articulo sku="X-1" cantidad="2">Engranaje de la máquina analítica</articulo><articulo sku="X-2" cantidad="1">Juego de tarjetas perforadas</articulo></articulos></pedido>

Formateado

<?xml version="1.0" encoding="UTF-8"?>
<pedido id="A-1042">
  <cliente>
    <nombre>Ada Lovelace</nombre>
    <correo>ada@example.com</correo>
  </cliente>
  <articulos>
    <articulo sku="X-1" cantidad="2">Engranaje de la máquina analítica</articulo>
    <articulo sku="X-2" cantidad="1">Juego de tarjetas perforadas</articulo>
  </articulos>
</pedido>

Solo con las reglas por defecto: un elemento por línea y dos espacios por nivel. El orden de los atributos, las comillas y los valores no se tocan, y tampoco el texto dentro de <nombre>.

Reglas, límites y problemas conocidos

  • Solo se comprueba la estructura: emparejamiento de etiquetas, comillas, duplicados y separación de atributos, nombres de elementos y atributos y sintaxis de entidades. Sin validación DTD o XSD, sin expansión de entidades y sin comprobación de enlaces de prefijos de espacio de nombres.
  • Solo se reescribe el espacio en blanco estructural: el que hay entre atributos y el que forma un elemento sin texto. El orden de los atributos, el estilo de comillas, los valores, las entidades, los comentarios, CDATA y el subconjunto interno del DOCTYPE se copian carácter a carácter.
  • El contenido mixto nunca se resangra: en <p>Hola <b>tú</b>!</p> el espaciado se mantiene como se escribió, porque añadir saltos de línea cambiaría el texto. Lo mismo ocurre con xml:space="preserve", que se copia tal cual.
  • Los elementos vacíos conservan la forma que escribiste: <a></a> no se contrae a <a/>, y <a/> no se expande. Los atributos no se ordenan y las comillas no se unifican.
  • Minificar solo elimina el espacio en blanco estructural. El espacio del texto, los comentarios, CDATA y el DOCTYPE se conservan: no se quita nada de tu contenido.
  • Una etiqueta, un comentario, un CDATA o un DOCTYPE sin cerrar al final de la entrada se notifica como aviso, no como error: sigues obteniendo un resultado. Los errores reales (etiquetas desemparejadas, valores de atributo sin comillas, un «&» suelto) son errores con línea y columna.
  • Un fragmento (varios elementos de nivel superior o texto fuera de la raíz) se formatea y se notifica como fragmento. Una entrada sin ningún elemento es un error.
  • Los números de línea y columna cuentan puntos de código Unicode, así que un emoji ocupa una columna. Solo el espacio, el tabulador, el salto de línea y el retorno de carro cuentan como espacio en blanco; U+3000 o U+00A0 dentro del texto son contenido y nunca se eliminan.
  • No es HTML: las etiquetas de cierre omitidas como </li> o <br> se notifican como no cerradas. Sin subida de archivos, sin parámetros en la URL, sin historial, sin vista de árbol y sin conversión XML→JSON. Todo funciona en tu navegador: no se sube ni se guarda nada.
  • Por encima de 200.000 caracteres el resultado se actualiza unos 0,6 s después de que dejes de escribir; el texto nunca se trunca. La salida usa LF y no termina en salto de línea; el formateo es idempotente.

Lo que suele hacer falta después, una vez legible la estructura.