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:
| clave | elemento |
|---|---|
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.