Funciona no seu dispositivo · Seu arquivo nunca sai do seu dispositivo.
Cole ou solte um JSON e receba um documento XML com a declaração no topo e um elemento por chave. Um documento com uma única chave no topo usa essa chave como elemento raiz; qualquer outro vai dentro de <root>. Uma lista vira elementos repetidos com o nome da chave — "itens": [..] dá vários elementos <itens> — e uma lista no topo do documento vira elementos <item> dentro de <root>.
Chaves que começam com @ viram atributos, e uma chave "#text" vira o texto do elemento — o formato que a ferramenta de XML para JSON grava, então um documento convertido lá volta aqui como o mesmo XML. Todo outro valor é texto dentro do seu elemento, null vira um elemento vazio, e o documento é indentado com dois espaços por nível. Chaves que o XML não aceita como nome — começando com dígito, com espaços ou símbolos — são corrigidas com sublinhados, então o resultado sempre é lido sem erro.
O texto é escapado corretamente (&, <, > e, nos atributos, aspas e quebras de linha); caracteres de controle, que o XML 1.0 não consegue guardar de jeito nenhum, são removidos. A codificação é UTF-8, e você vê as primeiras 200 linhas antes de baixar. Nada é enviado.
Não serve para: Seguir um esquema XML específico (SOAP, RSS, NF-e, um padrão de fatura) — os nomes dos elementos vêm das suas chaves JSON, não de um esquema.
Uma chave que começa com @ vira atributo, e uma chave "#text" vira o texto do elemento, então {"item": {"@id": 3, "#text": "A"}} dá <item id="3">A</item>. Quando o documento tem uma única chave no topo, essa chave é o elemento raiz; senão, tudo vai dentro de <root>.
Um caractere que o XML não aceita num nome vira sublinhado, e um nome que começa com um caractere que não pode vir primeiro, como um dígito, ganha um sublinhado na frente: "1o lugar" vira <_1o_lugar>. Os dois-pontos só ficam quando o prefixo está declarado mais acima, como em "@xmlns:soap"; um "soap:Body" não declarado vira <soap_Body>, porque nenhum leitor que entende namespaces o leria de outro jeito. Letras de qualquer escrita são aceitas, então uma chave como "اسم" ou "名前" fica como está.
Todo valor é escrito como texto, e os números exatamente como estão no JSON: 1.0 continua 1.0, e 12345678901234567890 mantém todos os dígitos. null e um objeto vazio viram um elemento vazio, como <note/>, e uma lista vazia não escreve nada, então o XML não distingue esses três.
Caracteres de controle — códigos abaixo de 32, exceto tabulação, avanço de linha e retorno de carro — não podem ser escritos em XML 1.0 de jeito nenhum, nem como número, tipo , então são removidos. Um retorno de carro é escrito como para o leitor mantê-lo. Em valores de atributo, aspas, tabulações e quebras de linha também são escritas como referências, porque senão o leitor as transformaria em espaços.
Elementos repetidos só conseguem expressar um nível de lista. "m": [[1, 2], [3]] vira três elementos <m> com 1, 2 e 3, e a informação de que 1 e 2 andavam juntos se perde. Uma lista no topo se comporta do mesmo jeito: [1, [3, 4]] dá três elementos <item>. Se o agrupamento importa, envolva antes cada lista interna num objeto: [{"values": [1, 2]}, {"values": [3]}] dá dois elementos <item>, cada um com o seu próprio <values>.
Um documento que passou por /xml-to-json volta com os mesmos elementos, atributos, prefixos de namespace e texto, sem nenhum envoltório extra. O que o JSON nunca guardou não volta: comentários e o DOCTYPE, a posição do texto entre elementos filhos e a ordem entre elementos de nomes diferentes, que voltam agrupados por nome. Se a detecção de tipos estava ligada em /xml-to-json, um valor como TRUE volta como true; desligue a detecção lá para uma ida e volta palavra por palavra.
Esta página em outros idiomas: English · العربية · Deutsch · Français · Español · Русский · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা