100 % local: tus datos nunca salen de tu navegador

JSON a XML — XML válido, listo para pegar

Convierte JSON a XML. Una sola raíz, nombres de etiqueta legalizados e indentación a tu gusto: listo para un cuerpo SOAP o un archivo de configuración.

Instantáneo Privado Cero cookies
Indentación
Invertir: XML → JSON

Entrada JSON

Salida XML

Qué hace esta herramienta

Las claves pasan a elementos, los valores a su contenido:

{ "usuario": { "nombre": "Ada", "puerto": 8080, "activo": true } }
<usuario>
  <nombre>Ada</nombre>
  <puerto>8080</puerto>
  <activo>true</activo>
</usuario>

Un documento con varias claves en la raíz se envuelve en <root>, porque XML admite exactamente un elemento raíz. Un array en la raíz pasa a elementos <item> repetidos dentro.

Aquí los tipos dejan de existir

Mira otra vez esa salida. 8080 y true ahora son texto, y nada en el documento dice que hayan sido otra cosa.

No es una limitación de la conversión: es lo que XML es. Un documento XML lleva estructura y texto. Los tipos vienen de un esquema —XSD, DTD, RELAX NG— que vive fuera del documento y que esta conversión no puede inventar.

La consecuencia práctica merece decirse sin rodeos: reconvertir te dará cadenas. {"port": 8080} vuelve como {"port": "8080"}, salvo que lo que lo lea decida otra cosa —es decir, adivine, y se equivoque con un número de versión como 1.10 o un código postal como 01234.

Si necesitas una ida y vuelta que preserve los tipos, XML no es el destino adecuado. Si necesitas XML, cuenta con que la vuelta será con pérdida.

Las claves se reparan, no se emiten rotas

Un nombre de elemento XML no puede llevar espacio ni empezar por dígito:

claveelemento
user name<user_name>
2nd<_2nd>

Y cuando dos claves se reparan al mismo nombre, la segunda pasa a user_name_1. Fundirlas haría desaparecer un valor en silencio, que es lo que esta herramienta más se esfuerza en evitar.

Los atributos, y la ida y vuelta

Una clave escrita "@_id" pasa a ser un atributo, "#text" pasa a ser el texto del elemento:

{ "usuario": { "@_id": "1", "#text": "Ada" } }
<usuario id="1">Ada</usuario>

Es la misma convención que emite el sentido XML a JSON, así que un documento convertido desde XML vuelve a la misma forma —con los tipos ahora cadenas, como arriba.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Por qué mi número volvió como cadena?
Porque XML no tiene tipos. `{"port": 8080}` se convierte en `<port>8080</port>`, y un documento XML no puede decir si eso es un número o el texto «8080». Reconvertir te da una cadena, salvo que algo —un esquema, o un conversor que adivina— decida otra cosa. La información se pierde en el paso a XML, no en la vuelta.
¿Qué pasa con una clave que no es un nombre de elemento válido?
Se repara: `user name` pasa a `<user_name>`, `2nd` a `<_2nd>`. Y si dos claves se reparan al mismo nombre, la segunda recibe un sufijo —`user_name_1`— en vez de sobrescribir la primera: un valor que desaparece sin decir nada es peor que un nombre feo.
¿Puedo producir atributos en vez de elementos?
Sí. Una clave llamada `"@_id"` pasa a ser el atributo `id`, y una clave `"#text"` pasa a ser el texto del elemento. Es la convención que produce el sentido XML a JSON, así que un documento que pasó por ahí se reconvierte a la misma forma.

Convertidores relacionados