O que é esta ferramenta?
XML e JSON são ambos formatos de dados em árvore, mas aparecem em contextos diferentes: APIs corporativas legadas, serviços SOAP, feeds RSS/Atom e muitos formatos de configuração ainda usam XML, enquanto APIs REST modernas e código JavaScript falam quase exclusivamente JSON. Esta ferramenta traduz entre os dois formatos para que você não precise escrever nenhum deles manualmente ao integrar sistemas antigos e novos.
A conversão é construída diretamente sobre a API DOMParser do navegador para leitura de XML, e segue a estrutura definida pela especificação W3C XML 1.0 para geração — assim o XML gerado é bem formado, e o XML aceito é interpretado da mesma forma que um navegador ou qualquer biblioteca XML compatível com o padrão interpretaria.
Como o XML tem conceitos que o JSON não tem (atributos, conteúdo misto de texto e elementos, um único elemento raiz obrigatório) e o JSON tem conceitos que o XML não tem (arrays nativos, booleanos, números), a ferramenta usa uma convenção documentada e amplamente utilizada: um atributo XML `name="value"` vira a chave JSON `"@_name": "value"`, o conteúdo de texto de um elemento vira o próprio valor de string (quando não há filhos ou atributos) ou uma chave `"#text"` ao lado de quaisquer atributos, e elementos irmãos repetidos com a mesma tag viram um array JSON.
Por que usar?
- Bidirecional — converta JSON para XML ou XML para JSON na mesma tela.
- Trata o aninhamento corretamente — objetos JSON aninhados viram elementos XML aninhados e vice-versa, em qualquer profundidade.
- Arrays são mapeados para elementos repetidos — um array JSON sob uma chave vira essa mesma quantidade de elementos XML irmãos com a mesma tag, e tags XML repetidas voltam como um array JSON.
- Atributos XML são preservados — usando a convenção `@_nomeDoAtributo`, para que os dados de atributos não sejam descartados silenciosamente.
- Copie para a área de transferência ou baixe como arquivo .json ou .xml.
- 100% no navegador — nada do que você cola é enviado a servidor algum.
Como usar
- Escolha uma direção: "XML → JSON" ou "JSON → XML".
- Cole seus dados na caixa de entrada.
- Clique em "Convert".
- Revise o resultado, depois copie ou clique em "Download" para salvar um arquivo.
Exemplo
Entrada
{"user":{"name":"Alice","age":30}}Resultado
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>A única chave de nível superior do JSON ("user") vira o elemento raiz do XML; se o JSON tiver mais de uma chave de nível superior, a ferramenta envolve tudo em um elemento <root>, já que o XML exige exatamente um elemento raiz.
Dicas práticas
- Migrar uma configuração XML legada (como o arquivo de configurações de um app antigo) para um sistema moderno baseado em JSON: cole o XML, converta e ajuste os nomes dos campos conforme necessário.
- Testar um endpoint SOAP ou XML-RPC a partir do JavaScript: converta o payload da sua requisição JSON para XML aqui antes de enviá-lo, ou converta uma resposta XML de volta para JSON para inspecioná-la facilmente.
- Se o seu JSON usa arrays para dados que o XML representaria como elementos repetidos, certifique-se de aninhar o array sob uma única chave primeiro (por exemplo, {"items":{"item":[1,2,3]}}) em vez de usar um array simples de nível superior, já que o XML não pode ter múltiplos elementos raiz.
Por que a convenção do atributo @_ é importante
A parte mais delicada da conversão entre JSON e XML é que elementos XML podem carregar dois tipos de dados ao mesmo tempo — atributos e conteúdo filho — enquanto um objeto JSON simples só tem chaves e valores. Sem uma convenção para manter isso separado, um conversor ingênuo perderia os atributos por completo ou os misturaria com os elementos filhos de uma forma que não pode ser convertida de volta com confiança. A convenção de prefixo `@_nome` (também usada por bibliotecas amplamente adotadas no ecossistema JavaScript) resolve isso dando aos atributos um formato de chave distinto e inequívoco, de modo que `<product id="42">Widget</product>` faz o percurso de ida e volta perfeitamente como `{"product":{"@_id":"42","#text":"Widget"}}`, sem perder o id nem arriscar adivinhar errado qual valor era qual.
Perguntas frequentes
O que acontece com um JSON com mais de uma chave de nível superior?
O XML exige um único elemento raiz, então, se o seu objeto JSON tiver várias chaves de nível superior (por exemplo, {"a":1,"b":2}), a saída é envolvida em um elemento <root>: <root><a>1</a><b>2</b></root>. Se o seu JSON tiver exatamente uma chave de nível superior, essa chave se torna diretamente o nome do elemento raiz.
Como os atributos XML são representados em JSON?
Um atributo como <user id="7"> vira a chave "@_id": "7" no objeto JSON resultante. Essa é uma convenção comum e documentada (usada por bibliotecas como fast-xml-parser) que mantém os atributos distinguíveis dos elementos filhos.
Elementos XML repetidos viram um array JSON?
Sim. Se um elemento tiver vários filhos com o mesmo nome de tag, por exemplo <items><item>1</item><item>2</item></items>, a conversão para JSON produz {"items":{"item":["1","2"]}}. Converter esse JSON de volta para XML reproduz os elementos <item> repetidos.
Números e booleanos são preservados ao converter XML para JSON?
O XML não tem um conceito nativo de números ou booleanos — tudo é texto — então o conteúdo de texto chega como uma string JSON (por exemplo, "30" em vez de 30). Se você precisar de tipos numéricos, terá que converter esses campos manualmente depois.
Meus dados são enviados para algum lugar?
Não. A análise e a conversão acontecem inteiramente em JavaScript no seu navegador, usando a API DOMParser embutida — nada é enviado a um servidor, então é seguro usar com arquivos de configuração privados ou payloads de APIs internas.