Formateador de XML

Pega o carga XML y valida con el parser del navegador: salida limpia con sangrado de 2 o 4 espacios, CDATA intacto y elementos autocerrados.

El análisis y el formateo ocurren localmente en tu navegador. Tu XML nunca sale de tu dispositivo.

Sangría
—

Cómo funciona

Pegar XML y pulsar Formatear ejecuta el DOMParser integrado del navegador — el mismo parser sincrónico de la plataforma — sobre tu texto. Si el resultado contiene un nodo parsererror, se muestra su mensaje con la pista de línea/columna en lugar de la salida. Con un parseo limpio, un serializador recursivo recorre el árbol y reconstruye el documento con la sangría elegida, un elemento por línea.

Por qué DOMParser falla (o parsea) justo donde lo hace
DOMParser es estricto y sincrónico: estar bien formado es todo o nada, así que una sola etiqueta sin cerrar invalida el archivo completo. El texto parsererror que produce (incluida la pista de posición que añaden los navegadores, como "Line Number: 12") se muestra literalmente como línea de error — la herramienta no intenta reparar tu XML, porque reparar en silencio cambia documentos.
El orden de atributos se conserva tal cual
El DOM expone los atributos en orden de documento y el serializador los escribe de vuelta en ese mismo orden. Nada se ordena, deduplica ni normaliza, así que comparar dos archivos formateados solo muestra cambios reales de contenido — no un barullo de atributos.
CDATA y elementos vacíos
Las secciones CDATA se vuelcan enteras, como texto crudo — son la forma estándar de llevar contenido tipo markup y convertirlas a entidades sería una reescritura, no un reformateo. Los elementos sin hijos se escriben autocerrados, así que <tag></tag> pasa a <tag/>.

Preguntas frecuentes

¿Por qué mi archivo dice que no está bien formado?

XML tiene una lista corta de reglas estrictas y el navegador rechaza el documento entero si una se rompe. Los culpables habituales: más de un elemento raíz, una etiqueta cerrada con el nombre equivocado o sin cerrar, un & o < sin escapar en el texto, mayúsculas distintas entre apertura y cierre, o un carácter suelto antes de la declaración XML. La línea de error señala la posición reportada para saltar directo al problema.

¿Qué diferencia hay entre CDATA y escapar?

Ambas formas transportan texto que rompería el XML. Escapar sustituye caracteres especiales por entidades (&amp; por &, &lt; por <), mientras una sección <![CDATA[ ... ]]> marca todo su contenido como texto crudo. Este formateador conserva los bloques CDATA literalmente — no los convierte en texto escapado ni al revés.

¿Resolvéis los espacios de nombres XML?

No. Los prefijos de espacio de nombres (como <soap:Envelope>) se conservan tal como están escritos — también los atributos y los nombres de elemento. El formateador solo re-sangra: no expande prefijos a URIs ni comprueba que un prefijo esté declarado, así que un error tipográfico de namespace que parsea también se imprime.

¿Formatear puede cambiar el significado de mi documento?

Re-sangrar añade espacios entre elementos, lo cual solo importa si tu parser trata el espacio en blanco dentro de los elementos como datos (raro, sobre todo en documentos validados por esquema o de contenido mixto). El orden de atributos, las entidades y los bloques CDATA se mantienen tal cual, y un elemento vacío se imprime como <tag/> exactamente como define XML.

¿Se sube algo a un servidor?

No. El análisis y el formateo usan el DOMParser integrado del navegador y JavaScript puro. Tu XML nunca sale del dispositivo y no hay ninguna petición de red asociada al formateo.