O que esta ferramenta faz
As chaves viram elementos, os valores viram o conteúdo deles:
{ "usuario": { "nome": "Ada", "porta": 8080, "ativo": true } }
<usuario>
<nome>Ada</nome>
<porta>8080</porta>
<ativo>true</ativo>
</usuario>
Um documento com várias chaves na raiz é embrulhado em <root>, porque o XML admite exatamente um elemento raiz. Um array na raiz vira elementos <item> repetidos dentro dele.
Aqui os tipos deixam de existir
Olhe de novo para essa saída. 8080 e true agora são texto, e nada no documento diz que algum dia foram outra coisa.
Não é uma limitação da conversão: é o que o XML é. Um documento XML carrega estrutura e texto. Os tipos vêm de um esquema — XSD, DTD, RELAX NG — que vive fora do documento e que esta conversão não tem como inventar.
A consequência prática merece ser dita sem rodeios: reconverter vai lhe dar strings. {"port": 8080} volta como {"port": "8080"}, a menos que quem o leia decida outra coisa — ou seja, adivinhe, e erre num número de versão como 1.10 ou num CEP como 01234.
Se você precisa de uma ida e volta que preserve tipos, o XML não é o destino certo. Se precisa de XML, conte com uma volta com perda.
As chaves são reparadas, não emitidas quebradas
Um nome de elemento XML não pode ter espaço nem começar por dígito:
| chave | elemento |
|---|---|
user name | <user_name> |
2nd | <_2nd> |
E quando duas chaves são reparadas para o mesmo nome, a segunda vira user_name_1. Fundi-las faria um valor sumir em silêncio, que é o que esta ferramenta mais se esforça para evitar.
Atributos, e a ida e volta
Uma chave escrita "@_id" vira atributo, "#text" vira o texto do elemento:
{ "usuario": { "@_id": "1", "#text": "Ada" } }
<usuario id="1">Ada</usuario>
É a mesma convenção que o sentido XML para JSON emite, então um documento convertido a partir de XML reconverte para a mesma forma — com os tipos agora strings, como acima.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.