XML a JSON
Convierta XML en datos estructurados sin perder lo que llevan las etiquetas: los atributos se conservan con un prefijo claro y las etiquetas repetidas forman listas. Así, un catálogo con dos libros se convierte en una lista con Rayuela, 1963, y Pedro Paramo, 1955. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
conserva los atributos, gratis en la web
Por qué un conversor rápido pierde datos sin avisar
Si alguien escribe un conversor de XML en cinco minutos, lo habitual es que maneje bien el texto de cada elemento y descarte en silencio todos los atributos, porque la mayoría de los lectores de XML los tratan como notas al margen y no como datos. En documentos reales eso sale caro. Los mensajes SOAP, los canales RSS, los dibujos SVG y los archivos de configuración heredados de sistemas con una década a cuestas guardan a menudo en la propia etiqueta los valores que más importan: un identificador, un tipo, un código de moneda, un número de versión. Este conversor los conserva, cada uno con un prefijo constante, para que un atributo nunca choque con un elemento vecino que tenga el mismo nombre.
Dónde sigue vivo el XML y qué se obtiene
El formato que hoy intercambian casi todas las aplicaciones web ganó esa batalla hace años, pero el XML nunca se fue. Sigue moviendo servicios SOAP, canales RSS y Atom y el interior de los documentos de Office, así que tarde o temprano alguien tiene que llevar esos datos a un sistema más nuevo o a una hoja de cálculo. La conversión respeta el árbol: los elementos anidados siguen anidados y las etiquetas que se repiten forman una lista en lugar de pisarse unas a otras. En el ejemplo, un catálogo con dos libros vuelve como una lista con Rayuela, 1963, y Pedro Paramo, 1955, cada título y cada año bajo su propio nombre. El error habitual es aplanarlo todo a mano y perder qué valor pertenecía a cada elemento.
Preguntas frecuentes
¿Qué pasa con los espacios de nombres de XML?
Los prefijos de espacio de nombres se mantienen en los nombres de elementos y atributos a los que pertenecen, para que el código posterior siga sabiendo de qué espacio de nombres viene cada campo.
¿Se guardan mis datos XML después de la conversión?
No, los archivos de origen y los resultados se eliminan después del período de retención y nunca se usan para entrenamiento.
¿Qué pasa con los atributos de XML al convertir?
Se conservan. Cada uno recibe un prefijo constante para que nunca choque con un elemento del mismo nombre en el mismo nivel, algo importante porque los atributos suelen llevar el identificador, el tipo, la moneda o la versión.
¿Qué ocurre cuando la misma etiqueta aparece varias veces?
Las etiquetas repetidas se convierten en una lista. En el ejemplo, el catálogo tiene dos elementos libro, así que el resultado contiene una lista de dos libros, Rayuela de 1963 y Pedro Paramo de 1955, en el orden en que aparecían.
¿Para qué tipo de documentos XML sirve?
Para cualquier XML, y sobre todo para los que todavía mueven muchos sistemas: mensajes de servicios SOAP, canales RSS y Atom, dibujos SVG, documentos de Office y archivos de configuración heredados de programas antiguos.
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/data/xml-to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"xml":"<r><a>1</a></r>"}'const res = await fetch("https://api.kit.forhosting.com/data/xml-to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"xml": "<r><a>1</a></r>"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/xml-to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"xml": "<r><a>1</a></r>"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/xml-to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"xml":"<r><a>1</a></r>"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"xml":"<r><a>1</a></r>"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/xml-to-json", 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": "<r><a>1</a></r>"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.xml_to_json",
"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
max_mb | 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
Los documentos XML guardan información en lugares que JSON nunca fue diseñado para tener: atributos, espacios de nombres, nodos de texto mixtos. Un convertidor ingenuo descarta todo eso; este endpoint lo conserva, mapeando los atributos en una estructura predecible y documentada en lugar de eliminarlos en silencio.
Lo que cualquier script rápido hace mal
Pídale a un desarrollador que escriba en cinco minutos un convertidor de XML a JSON y va a obtener uno que maneja bien el texto de los elementos y luego descarta silenciosamente cada atributo, porque la mayoría de los analizadores de XML tratan los atributos como metadatos y no como datos. Pero en documentos reales —sobres SOAP, feeds RSS, marcado SVG, archivos de configuración heredados de un sistema de hace una década— los atributos suelen cargar los campos que realmente importan: un id, un tipo, un código de moneda, un número de versión que vive en la etiqueta y no adentro de ella. data.xml_to_json conserva esos atributos, con un prefijo consistente para que nunca choquen con nombres de elementos vecinos.
Qué envía y qué recibe de vuelta
Envíe su XML por POST a /data/xml-to-json, reciba un task_id de inmediato y deje que la conversión corra en segundo plano. El resultado —JSON limpio con atributos, elementos anidados y etiquetas repetidas mapeadas en arreglos— llega mediante una llamada de webhook firmada o queda disponible en un enlace firmado válido por 24 horas, según cómo esté configurado su sistema para recibirlo.
Por qué XML sigue apareciendo en 2026
JSON ganó hace años la guerra de los payloads de API, pero XML nunca desapareció: todavía sostiene servicios SOAP, feeds RSS y Atom, los archivos internos de documentos de oficina, gráficos SVG, recursos de Android y una larga lista de sistemas empresariales donde un formato autodescriptivo y validable por esquema era la decisión correcta cuando se construyó. Los equipos que arman integraciones modernas no eligen el formato del otro lado de un feed heredado; eligen qué tan rápido lo normalizan apenas llega, y esa es exactamente la tarea de este endpoint.
Cómo encaja en un flujo de normalización
Un patrón común es una capa de ingreso que acepta lo que sea que envíe un socio o sistema heredado, lo convierte a JSON de inmediato y deja que cada servicio posterior —validación, almacenamiento, transformación— trabaje sobre una única estructura predecible en lugar de escribir un analizador XML a la medida de cada fuente. Como la tarea es asíncrona y se cobra por solicitud, procesar de noche varios miles de feeds de socios cuesta lo mismo por documento sin importar si corre a las 3am sin supervisión o un archivo a la vez en horario laboral, y no se cobra nada a menos que la conversión realmente tenga éxito.
Casos de integración
Normalización de respuestas SOAP
Una capa de integración convierte respuestas SOAP en XML de una API heredada de un socio a JSON antes de entregárselas a un microservicio moderno que solo habla JSON.
Ingreso de feeds RSS y Atom
Un agregador de contenido convierte feeds RSS y Atom en XML a JSON para almacenarlos y consultarlos junto con datos que ya llegan desde APIs JSON.
Migración de configuraciones heredadas
Una plataforma que migra un sistema de configuración basado en XML convierte cada archivo a JSON una sola vez, conservando todos los atributos que necesita el nuevo formato.
Extracción de metadatos de SVG
Una herramienta de diseño convierte archivos SVG a JSON para leer atributos como viewBox, id y style de forma programática sin escribir un analizador XML propio.
Preguntas técnicas
¿Cómo convierto XML a JSON con la API?
Envíe su documento XML por POST a /data/xml-to-json, guarde el task_id devuelto y reciba el JSON convertido por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para convertir XML a JSON?
No, no hay plan gratuito ni prueba; cuesta $0.002 por solicitud, y una conversión fallida nunca se cobra.
¿Se conservan los atributos de XML en el JSON resultante?
Sí, los atributos se conservan con un prefijo consistente en el JSON resultante para que nunca choquen con nombres de elementos de la misma etiqueta.
¿Puede manejar etiquetas repetidas y elementos anidados?
Sí, las etiquetas hermanas repetidas se mapean en arreglos de JSON y los elementos anidados se convierten en objetos anidados, respetando la estructura original del documento.
¿Qué tan grande puede ser el archivo que convierto?
El endpoint está pensado para tamaños típicos de documento, feed o archivo de configuración; las exportaciones muy grandes conviene dividirlas en varias solicitudes enviadas en paralelo.
¿Puedo convertir archivos por lote?
Sí, envíe una tarea asíncrona por documento y reciba cada resultado por webhook a medida que termine, el mismo patrón que usan la mayoría de las integraciones por lotes.