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.
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.
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.
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.
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 (& < > " ') e as numéricas, como  , 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 (escreva   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.
Esta página em outros idiomas: English · العربية · Deutsch · Français · Español · Русский · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা