Converter XML em JSON

Funciona no seu dispositivo · Seu arquivo nunca sai do seu dispositivo.

Solte um arquivo .xml ou cole o XML de uma API, de um feed ou de um arquivo de configuração e receba um JSON com que dá para trabalhar. O documento é lido pelo leitor de XML do próprio navegador, na codificação que a primeira linha declara, então tudo que é bem formado converte, e um arquivo com defeito é reportado com a linha e a coluna do problema e o que está errado ali.

O mapeamento é fixo e reversível: cada elemento vira uma chave; irmãos com o mesmo nome viram uma lista; atributos ficam em chaves começando com @ (id="A3" vira "@id": "A3"); e quando um elemento tem texto e também filhos ou atributos, o texto vai para "#text". Um elemento só com texto vira o próprio valor.

Com a detecção de tipos ligada, texto como 12, true ou um elemento vazio vira número, booleano ou null; desligue para manter tudo como texto. Nomes com namespace (soap:Body) ficam como estão escritos. A prévia mostra as primeiras 200 linhas antes de você baixar.

Como Converter XML em JSON

  1. Solte um arquivo XML, ou cole o XML na caixa.
  2. Decida se números, booleanos e elementos vazios devem ser tipados.
  3. Clique em «Converter para JSON» e confira a prévia.
  4. Baixe o .json.

Formatos suportados e limites

Entrada
XML (.xml) — arquivo ou texto colado, na codificação que ele declara
Saída
JSON formatado, UTF-8
Atributos
Mantidos como chaves "@nome"
Elementos repetidos
Viram uma lista
Onde roda
No seu navegador — sem enviar nada

Não serve para: Documentos que não são XML bem formado (tags sem fechar, páginas HTML) — o leitor aponta o primeiro problema em vez de adivinhar.

Quais valores mudam de tipo

A detecção de tipos vale tanto para atributos quanto para texto e só muda um valor quando nada se perde. Com ela ligada, id="3" vira "@id": 3, enquanto id="007" continua o texto "007". 1.50 também continua texto, porque como número seria escrito de volta como 1.5. TRUE vira true. Um elemento vazio como <note/>, e um que só tem espaços, viram null; a palavra NULL continua texto. Datas como 2024-01-05 nunca são convertidas.

Com a detecção desligada, elementos vazios viram "" e todo valor continua texto, exatamente como está escrito.

O que o JSON não consegue guardar

Algumas partes de um documento XML não têm lugar no JSON e são descartadas: comentários, instruções de processamento e o DOCTYPE. Seções CDATA viram texto comum, então <a><![CDATA[<b>x</b>]]></a> dá "a": "<b>x</b>".

A ordem entre elementos de nomes diferentes se perde, porque cada nome vira uma chave. Em <step>1</step><note/><step>2</step>, os dois step são reunidos em "step": [1, 2], e nada registra que o note estava entre eles. Texto misturado com marcação perde a posição do mesmo jeito: <p>Hello <b>world</b> and <i>you</i>!</p> vira "b": "world", "i": "you" e "#text": "Hello and !". Para documentos em que essa ordem é o conteúdo, como textos formatados, esse mapeamento não é uma boa escolha.

Namespaces, entidades, erros e codificações

Nomes com prefixo ficam como estão escritos, e as declarações de namespace aparecem como atributos: <soap:Envelope xmlns:soap="…"> dá uma chave "soap:Envelope" contendo "@xmlns:soap", e /json-to-xml transforma as duas de volta no mesmo XML.

Além das entidades que o próprio DOCTYPE do documento define, só as cinco embutidas no XML (&amp; &lt; &gt; &quot; &apos;) e as numéricas, como &#160;, são entendidas. Quando o leitor para, a mensagem dá a linha e a coluna e diz em palavras simples o que está errado: um elemento fechado com outro nome, um nome desconhecido como &nbsp; (escreva &#160; no lugar), um & ou um < soltos, um segundo elemento no topo, ou um arquivo que termina antes da hora.

O arquivo é lido na codificação que a primeira linha declara, como ISO-8859-1 ou windows-1256. Sem declaração, é lido como UTF-8 ou UTF-16, e páginas de código antigas são reconhecidas como explicado em /csv-to-json.

Perguntas frequentes

Meus arquivos são enviados para algum servidor?
Não. A conversão acontece inteiramente no seu navegador, com a capacidade do seu próprio aparelho. O arquivo não sai do seu computador nem do seu celular, e, depois que você usa a ferramenta uma vez, ela continua funcionando sem internet (as de vídeo, de reconhecimento de texto e de remoção de fundo baixam o motor deste site no primeiro uso).
Como atributos e conteúdo misto são tratados?
Atributos viram chaves com prefixo @, então <item id="A3"> dá "@id": "A3". Se um elemento tem texto além de atributos ou elementos filhos, o texto fica em "#text"; um elemento só com texto vira esse texto diretamente.
Por que um elemento vira objeto e os repetidos viram lista?
Um elemento que aparece uma vez dentro do pai vira um objeto (ou um valor); dois ou mais irmãos com o mesmo nome viram uma lista. Isso espelha o documento exatamente, então uma lista de um item só é um objeto — se o seu código precisa de lista nos dois casos, envolva do lado que recebe.
Como fica o topo do JSON?
Uma chave com o nome do elemento raiz, contendo tudo que está dentro — <registros>…</registros> vira {"registros": {...}}. Isso preserva o nome da raiz para a ferramenta de JSON para XML reconstruir o mesmo documento.

Ferramentas relacionadas

Mais em Planilhas e dados

Esta página em outros idiomas: English · العربية · Deutsch · Français · Español · Русский · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা