Conversor de XML para JSON

Converta XML para JSON e vice-versa com um único mapeamento documentado — atributos, arrays e texto misto — via DOMParser.

A conversão acontece localmente no seu navegador. Seus documentos nunca saem do dispositivo.

—

Como funciona

De XML para JSON usa o DOMParser e percorre a árvore com um conversor recursivo escrito à mão; de JSON para XML percorre o objeto no sentido inverso. O mapeamento é fixo e documentado abaixo — o mesmo arquivo sempre produz o mesmo JSON, e o JSON reconstrói o mesmo XML.

A convenção, em uma imagem
Os atributos são reunidos num objeto "attr" sobre o elemento; elementos irmãos repetidos com o mesmo nome viram um array JSON; um elemento que mistura texto com filhos ou atributos guarda o texto sob "#text"; um elemento sem filhos é apenas sua string de texto.
Números e booleanos continuam strings
XML não tem tipos de dados, então cada valor de texto vira string JSON exatamente como escrito — "12" nunca vira o número 12. Isso mantém o sentido inverso exato (primitivos JSON são re-stringificados) e evita alterar em silêncio valores como "007" ou "true" que um conversor que adivina tipos corromperia.
O que é descartado, honestamente
Comentários e instruções de processamento não têm representação JSON neste mapeamento e não sobrevivem ao ida e volta; conteúdo CDATA vira texto simples (sem perda para o texto em si). Prefixos de namespace são mantidos literalmente, nunca expandidos. A declaração XML é reescrita na exportação com codificação UTF-8.

Perguntas frequentes

Por que não existe um mapeamento XML para JSON "correto" único?

XML não tem tipo array — elementos <item> repetidos e um <item> sozinho têm a mesma forma quando você perde a contagem, e XML não tem como dizer "esta lista é sempre uma lista" sem um schema. Todo conversor precisa adivinhar, e os palpites diferem. Por isso vários conversores online produzem JSON diferente do mesmo arquivo; esta página escolhe uma convenção documentada e a segue de forma estável nos dois sentidos.

A ferramenta entende schemas XSD ou DTD?

Não. Ela lê apenas o documento de instância — elementos, atributos e texto como escritos. Não consulta um XSD para decidir se um elemento de ocorrência única deveria continuar sendo array nem resolve entidades externas. Se o seu consumidor precisa de mapeamento guiado por schema, você vai precisar de um conversor que carregue o próprio schema.

O que acontece com arquivos XML muito grandes?

Tudo roda na memória do navegador, então um arquivo de dezenas de megabytes vai ser parseado mas pode travar na conversão, e o JSON.stringify dobra o consumo de novo. Para feeds de gigabytes, a resposta honesta é um conversor de streaming no servidor; esta ferramenta foi feita para arquivos de configuração, payloads de API e XML de tamanho de documento.

Posso converter JSON de volta para XML e recuperar meu arquivo?

Dentro do mapeamento documentado, sim — o formato desta ferramenta faz ida e volta: converta para JSON, mude um valor, converta de novo, e atributos, elementos repetidos e texto saem com a mesma forma com que entraram. Arquivos de outros conversores com convenções diferentes (por exemplo prefixos "@" ou "_" para texto) podem exigir ajuste manual.

Algo é enviado para um servidor?

Não. Análise e conversão são JavaScript puro mais o DOMParser do navegador, rodando inteiramente no seu dispositivo. Seus documentos — e quaisquer credenciais dentro de um XML de configuração — nunca saem da sua máquina.