Saltar al contenido

Formateador y validador de XML

Pega un XML para darle formato con sangría de 2 espacios, 4 espacios o tabulaciones, comprimirlo en una sola línea o descubrir por qué no se analiza. El XML bien formado devuelve su número de elementos, su profundidad de anidamiento y su tamaño; el XML mal formado devuelve el mensaje del analizador. Gratis, sin registro, y el XML nunca sale de tu navegador.

Modo

Cómo usar el formateador de XML

  1. 1. Elige un modo. Formatear da formato con sangría; Minificar elimina el espacio entre elementos.
  2. 2. Elige una sangría. Para Formatear, elige 2 espacios, 4 espacios o una tabulación.
  3. 3. Pega tu XML y pulsa el botón. El resultado aparece debajo con tres recuentos: elementos, profundidad máxima (la raíz es el nivel 1) y tamaño de salida en caracteres.
  4. 4. Corrige los errores si aparecen. Si el XML no está bien formado, no se genera ninguna salida y el analizador de tu navegador indica lo que encontró. Corrige el XML y vuelve a pulsar el botón.

Bien formado frente a válido

Dos cosas distintas reciben el nombre de «validar» XML. Un documento está bien formado si sigue las reglas de sintaxis de la Recomendación XML 1.0 del W3C; es válido si además cumple un esquema, como un DTD o un XSD. Esta herramienta solo comprueba que el XML esté bien formado, con el analizador XML integrado en tu navegador. No lee DTD ni esquemas, así que un documento bien formado pero inadecuado para tu aplicación —por ejemplo, con un elemento obligatorio que falta— pasa la comprobación. Estas son las reglas que aplica:

ReglaSe rompe cuando
Un solo elemento raízHay dos elementos de nivel superior, o texto antes de la raíz
Los elementos se anidan correctamente<a><b></a></b>
Cada etiqueta de apertura tiene su etiqueta de cierre<a><b></a>, o <br> en lugar de <br/>
Los nombres distinguen mayúsculas y minúsculas<Title>…</title>
Los valores de los atributos van entre comillas<a id=1/>
Ningún atributo se repite en un elemento<a id="1" id="2"/>
< y & se escapan en el texto<a>5 < 6 & 7</a> debería ser 5 &lt; 6 &amp; 7

XML define exactamente cinco entidades predefinidas —&lt;, &gt;, &amp;, &apos; y &quot;—, así que una entidad HTML como &nbsp; es un error a menos que un DTD la declare. En una etiqueta sin cerrar, el mensaje es el del navegador, varía según el navegador y nombra el par que no coincide: en Chrome (con el mensaje en inglés), <a><b></a> produce un error en la línea 1, columna 11, con «Opening and ending tag mismatch: b line 1 and a».

Qué cambia el formateador

La herramienta convierte tu XML en un árbol y lo vuelve a escribir, así que la salida es XML equivalente con una disposición más ordenada, no una copia de tu texto. Espera estas diferencias:

  • Declaración y DOCTYPE conservados. Una línea inicial <?xml …?> y una declaración <!DOCTYPE …>, con su subconjunto interno, se escriben tal como los escribiste.
  • Los atributos conservan su orden, pero se reescriben con comillas dobles.
  • Las entidades se resuelven. &apos; y las referencias de carácter como &#169; vuelven como los caracteres mismos; solo &, < y > en el texto, y &quot; en los atributos, se vuelven a escapar.
  • Los elementos vacíos se cierran solos. <a></a> pasa a <a/> cuando no tiene contenido, aunque uno que contiene solo un espacio se queda como <a></a>.
  • Los comentarios, las secciones CDATA y las instrucciones de procesamiento se conservan.

Ejemplo desarrollado

Este documento de una línea tiene una declaración, un atributo entre comillas simples, un comentario y un elemento vacío:

Entrada

<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>

Formatear, 2 espacios

Nueve líneas y 172 caracteres: la declaración, después library sin sangría, cada book con dos espacios, y el título, el año y el comentario con cuatro espacios. El primer libro ahora se escribe id="1".

Minificar

Una línea de 146 caracteres.

Estadísticas

5 elementos y una profundidad máxima de 3 (library, book, title).

Minificar conserva la declaración y pone todo el árbol en una línea, así que el mismo documento pasa de 172 caracteres a 146. La tarjeta de tamaño de salida muestra estos recuentos de caracteres.

¿Qué herramienta necesitas?

Esta página es para XML. Para HTML, que tolera etiquetas sin cerrar y conserva el espaciado en línea, usa el Formateador de HTML. Para convertir XML en datos JSON, el Conversor de XML a JSON, que está en preparación, muestra cómo se asocian los atributos y los elementos repetidos; para JSON en sí, usa el Formateador de JSON.

Preguntas frecuentes

¿Qué hace un formateador de XML?
Vuelve a indentar el XML para que se vea la jerarquía, normalmente con un elemento por línea. Este además comprueba que el XML esté bien formado, porque tiene que analizar el documento antes de poder volver a escribirlo con otra disposición.
¿Cómo funciona aquí la validación de XML?
El analizador XML integrado en tu navegador lee el texto. Si el XML infringe una regla de sintaxis, se muestra el error del analizador y no se produce ninguna salida. Solo comprueba que esté bien formado; no valida contra un DTD ni contra un esquema XSD.
¿Se conservan los comentarios, las secciones CDATA y los atributos?
Sí: los comentarios y las secciones CDATA se escriben tal como estaban, y los atributos conservan su orden, aunque las comillas se normalizan a dobles. Una declaración DOCTYPE se escribe tal como la escribiste.
¿Qué hace minificar?
Elimina el espacio en blanco y los saltos de línea entre elementos para dar el texto equivalente más corto, conservando la declaración XML si la hay. El texto dentro de elementos como <title> conserva sus espacios, y también el texto junto a elementos hijos, como en un párrafo con una palabra en negrita.
¿Por qué dar formato cambia los espacios de mi texto?
Solo al dar formato contenido mixto: texto junto a elementos hijos, como un párrafo con una palabra en negrita. Formatear recorta ese texto y pone cada fragmento en su propia línea, lo que cambia los espacios; Minificar los conserva. El XML de tipo datos, donde los elementos contienen texto u otros elementos, no se ve afectado.
¿Por qué falla mi XML con &nbsp;?
XML tiene solo cinco entidades predefinidas, y &nbsp; no es una de ellas. Sustitúyela por la referencia numérica &#160; o declara la entidad en un DTD.
¿Se sube mi XML a un servidor?
No. El análisis y el formateo se hacen en tu navegador, y nada de lo que pegas se envía a ningún sitio.

Herramientas relacionadas

Más en Datos, marcado y código