Formatee XML en línea
Pegue una línea larga de XML, como un catálogo de libros, y obtenga un árbol con dos espacios de sangría por nivel. Antes se revisa todo el documento, así que una etiqueta mal cerrada se avisa en lugar de formatearse a medias. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Un XML legible facilita mucho la revisión de configuraciones, canales de datos, cargas de integraciones y formatos documentales. Este formateador analiza el XML que usted proporciona, comprueba que su estructura esté bien formada y vuelve a serializarlo con una sangría predecible. Los elementos anidados quedan claros, los atributos usan comillas uniformes y se elimina el espacio de presentación irrelevante. Si hay etiquetas incompatibles, una entidad no válida, un atributo mal construido o más de un elemento raíz, la operación devuelve un error en lugar de generar una salida que solo parece correcta.
Convierta XML comprimido en una estructura fácil de revisar
Aunque una máquina pueda consumirlo, resulta difícil ver dónde termina un registro y comienza el siguiente. Pegue el código fuente y cada nivel estructural recibirá una sangría uniforme, para distinguir mejor padres, hijos, elementos hermanos, atributos, comentarios e instrucciones de procesamiento. Puede indicar una cadena de sangría opcional y elegir espacios o tabulaciones según las convenciones del repositorio.
Los elementos con texto permanecen compactos para no insertar caracteres de presentación en contenido mixto, mientras que los nodos estructurales se distribuyen en líneas. El formateo no renombra elementos, reordena atributos, inventa espacios de nombres ni repara silenciosamente un marcado defectuoso.
La validación termina antes de devolver el resultado
Una sangría bonita solo sirve si el documento subyacente es válido. Por eso, el analizador comprueba toda la entrada antes de entregar el XML formateado. Cada elemento de apertura debe tener su cierre correcto, los nombres de atributos solo pueden aparecer una vez por etiqueta, los valores entre comillas deben cerrarse y el documento debe contener exactamente un elemento raíz.
Se reconocen y comprueban comentarios, secciones CDATA, instrucciones de procesamiento, referencias numéricas de caracteres, las cinco entidades XML predefinidas y una declaración de tipo de documento en su posición permitida. Las entidades con nombre desconocido se rechazan, ya que resolverlas sin su declaración sería ambiguo y potencialmente inseguro. Los errores explican brevemente la causa, como una etiqueta de cierre incompatible o un comentario sin terminar.
Esta capacidad no descarga esquemas, recursos DTD ni definiciones de espacios de nombres. Comprueba que el XML esté bien formado, pero no que cumpla un vocabulario empresarial o XSD concreto.
Para una revisión rápida o para tareas repetidas
Para una carga ocasional, el ejecutor del navegador permite formatear XML rápidamente sin instalar herramientas locales. Como la implementación no usa red, aleatoriedad, reloj ni inferencia de modelos, una entrada y una sangría idénticas producen siempre la misma salida. Esa estabilidad reduce el ruido en el control de versiones.
Considere el resultado una representación normalizada para lectura, no XML canónico para firmas criptográficas. Si necesita conservar bytes, validar esquemas, expandir entidades externas, firmar o aplicar una norma especializada de canonicalización, utilice una biblioteca XML auditada para ese flujo antes de verificar o firmar.
Qué puede hacer con ella
Rechace importaciones mal formadas
Compruebe el XML entrante al inicio del proceso y devuelva un error útil si las etiquetas, entidades o atributos no son válidos.
Preguntas frecuentes
¿Esta herramienta repara XML mal formado?
No. Devuelve un error si el documento no está bien formado, para que una reparación accidental no oculte un problema de origen.
¿Puedo elegir tabulaciones o espacios?
Sí. Establezca el campo de sangría con una cadena de espacios o tabulaciones de hasta ocho caracteres. El valor predeterminado son dos espacios.
¿Valida con un XSD o DTD?
No. Solo comprueba que el XML esté bien formado y no descarga ni aplica esquemas o recursos DTD externos.
¿El formateo cambia el contenido textual?
Los elementos con texto o contenido mixto permanecen compactos para no añadirles espacios. La escritura de entidades y las comillas pueden normalizarse conservando sus valores.
¿Por qué se rechaza mi XML?
Porque no está bien formado. Los motivos típicos son una etiqueta de cierre que no coincide, un atributo repetido en la misma etiqueta, unas comillas o un comentario sin cerrar, más de un elemento raíz o una entidad con nombre desconocida. El mensaje indica el tipo de problema.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/xml-format \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"xml":"<catalog><book id=\"1\"><title>Practical XML</title><available>true</available></book></catalog>"}'const res = await fetch("https://api.kit.forhosting.com/web/xml-format", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"xml": "<catalog><book id=\"1\"><title>Practical XML</title><available>true</available></book></catalog>"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/xml-format",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"xml": "<catalog><book id=\"1\"><title>Practical XML</title><available>true</available></book></catalog>"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/xml-format", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"xml":"<catalog><book id=\\"1\\"><title>Practical XML</title><available>true</available></book></catalog>"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"xml":"<catalog><book id=\"1\"><title>Practical XML</title><available>true</available></book></catalog>"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/xml-format", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"xml": "<catalog><book id=\"1\"><title>Practical XML</title><available>true</available></book></catalog>"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.xml_format",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Convierta XML comprimido en una estructura fácil de revisar
El XML suele llegar como una sola línea procedente de una respuesta API, un archivo de ajustes exportado o un mensaje copiado de un registro.
Use el navegador para revisiones y la API para procesos repetibles
Para tareas recurrentes, la API ofrece el mismo algoritmo determinista a pruebas, procesos de importación, utilidades de soporte e integraciones de editores por $0.002 por solicitud.
Casos de integración
Revise una carga API
Expanda una respuesta XML compacta en una jerarquía legible antes de depurar valores, anidamiento y atributos.
Normalice fixtures de pruebas
Aplique una sangría estable al XML generado para que las revisiones y comparaciones muestren con claridad los cambios estructurales.
Preguntas técnicas
¿Cuánto cuesta formatear XML?
Es gratis en el ejecutor del navegador y cuesta $0.002 por solicitud API.