Formateador y validador de XML

Pega XML, formatea con sangría adecuada o valida la sintaxis. Maneja atributos y espacios de nombres. Sin subida.

  1. Pega tu XML en el área de texto izquierda.
  2. Haz clic en Formatear para hacer round-trip por fast-xml-parser y producir XML indentado.
  3. Haz clic en Validar para comprobar la well-formedness sin modificar la entrada.
  4. Los errores apuntan a la posición ofensora en el documento.
¿Qué hace?

Parsea XML con fast-xml-parser y lo re-emite con indentación consistente. El orden de los atributos dentro de cada elemento se preserva; el anidamiento de elementos se preserva exactamente. El contenido mixto (texto + elementos hijos) y los namespaces (prefix:tag) se mantienen intactos. La salida es XML well-formed — pero well-formed no es lo mismo que válido (la validez requiere un esquema o DTD, que esta herramienta no comprueba).

Ejemplo

Entrada XML desordenada:

<root version="1"><name>Ada</name><tags>math</tags><tags>logic</tags></root>

Salida formateada:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Errores comunes de XML y cómo arreglarlos

Las reglas de well-formedness de XML son más estrictas que HTML. Los patrones a continuación cubren la mayoría de fallos del parser.

  • Etiqueta sin cerrar. `<a><b></a>` es inválido — `<b>` debe cerrarse (`<b/>` o `</b>` en algún lugar). XML no permite etiquetas de cierre opcionales estilo HTML.
  • Mayúsculas/minúsculas no coinciden. XML distingue mayúsculas — `<Foo></foo>` son dos nombres de etiqueta distintos. Coincide exactamente.
  • Caracteres especiales sin escapar. Un `<`, `>`, `&` o comilla literal dentro de texto o de un valor de atributo debe escaparse: `&lt;`, `&gt;`, `&amp;`, `&quot;`. Envuelve datos con esos caracteres en CDATA: `<![CDATA[...]]>`.
  • Múltiples raíces. XML requiere exactamente un elemento raíz. `<a/><b/>` en el nivel superior es inválido — envuélvelos: `<root><a/><b/></root>`.
  • Nombre de elemento inválido. Los nombres de elementos no pueden empezar con un dígito, contener espacios, ni usar caracteres reservados (`< > & " \'`). Los nombres que empiezan con `xml` (cualquier caso) están reservados por la especificación.
  • Comillas no coincidentes alrededor de atributos. `<a name="value\'>` mezcla comillas dobles y simples. Elige un estilo consistente por atributo. Cualquiera es XML válido.
Preguntas frecuentes

¿Formatear cambia mis datos?

Solo el espacio en blanco entre elementos. El orden de elementos, el orden de atributos, los valores de atributos, el contenido textual y la envoltura CDATA se preservan. La forma auto-cerrada (`<x/>`) y la forma explícita (`<x></x>`) pueden normalizarse.

¿Se preservan los comentarios XML?

fast-xml-parser quita los comentarios por defecto. Si necesitas formateo que preserve comentarios, usa una herramienta diferente (la transformación identidad XSLT, por ejemplo, o `xmllint --format`).

¿Esto valida contra un esquema?

No. Esto comprueba solo well-formedness — que el documento parsea como XML sintácticamente válido. La validación de esquema (XSD, DTD, RelaxNG) es un paso separado que requiere el esquema como entrada adicional.

¿Cómo se manejan los namespaces?

Los prefijos de namespace se mantienen como parte del nombre del elemento (`x:foo`). Las declaraciones de namespace por defecto y los enlaces de prefijos se preservan como atributos. No se realiza procesamiento namespace-aware (resolución de URI).

¿Mi XML se sube?

No. Todo se ejecuta en tu navegador — tu entrada se parsea y re-serializa por JavaScript en esta página y nunca se envía a un servidor.

¿Puedo personalizar la indentación?

Actualmente fija en 2 espacios por nivel. Para personalizar, ejecuta fast-xml-parser en línea de comandos — misma biblioteca — y pasa `{ indentBy: " " }` o cualquier otra cadena.