Conversor de XML para JSON

Converta dados XML para JSON. Transforme respostas de APIs XML legadas, payloads SOAP ou feeds RSS/Atom em JSON — atributos vão em @attributes, texto em #text, elementos repetidos viram arrays — direto no navegador.

Dicas de uso

  • Elementos com atributos são agrupados em um objeto `@attributes`, mantido separado do texto ou dos elementos filhos do próprio elemento.
  • Quando um elemento mistura atributos com elementos filhos ou texto, a parte de texto é armazenada em `#text`, para nunca ser confundida com um valor de atributo.
  • Elementos irmãos que compartilham o mesmo nome são automaticamente agrupados em um array: três tags `` viram um array de 3 elementos, enquanto uma única permanece como um objeto simples.
  • Um elemento vazio sem atributos, texto ou filhos (por exemplo ``) é convertido em `null`.
  • Prefixos de namespace como `xmlns` não são separados — um elemento continua com a chave `ns:tag`, prefixo incluído.

Perguntas frequentes

Os atributos de cada elemento são agrupados em uma chave `@attributes` contendo um objeto. Por exemplo, `` vira `{"@attributes": {"category": "fiction"}, ...}`, mantido separado do valor próprio do elemento (seu texto ou filhos) para nunca serem confundidos.

Quando elementos irmãos sob o mesmo pai compartilham um nome, eles são automaticamente agrupados em um array. Por exemplo, duas tags `` geram uma chave `book` cujo valor é um array de 2 elementos; uma única `` permanece como um objeto simples.

A causa mais comum é uma tag de fechamento ausente ou incompatível (fechada com um nome diferente do de abertura). O XML também exige exatamente um elemento raiz, então colar vários elementos de nível superior como `......` também causará falha.

Esta ferramenta só oferece suporte à direção XML para JSON. Se precisar formatar ou validar JSON ou XML separadamente, confira as outras ferramentas de formatação deste site.

Os prefixos de namespace são mantidos como estão, sem serem separados, então um elemento continua com a chave `ns:tag`. A resolução de namespace (associar o prefixo à sua URI) não é feita, então um XML com namespaces complexos pode não se converter na estrutura esperada.
ツールくん

Curiosidade — Por que não existe uma única forma "correta" de transformar XML em JSON

Diferente do simples mapeamento linha-para-objeto entre CSV e JSON, não existe uma convenção universalmente aceita para converter entre XML e JSON. O XML permite que atributos, nós de texto e elementos filhos coexistam dentro de um mesmo elemento, enquanto o JSON só tem pares chave-valor simples — então alguma convenção precisa ser escolhida no momento da conversão. Implementações importantes como xml2json, xml-js e org.json adotaram, cada uma, regras diferentes sobre como representar atributos e como tratar texto que coexiste com elementos filhos.

Ainda assim, desenvolvedores continuam encontrando XML com frequência. APIs web baseadas em SOAP, integrações de sistemas com décadas de existência nas áreas financeira, governamental e de saúde, feeds RSS/Atom e arquivos de layout do Android são apenas algumas das áreas onde o XML ainda é o formato padrão hoje. Existe uma necessidade persistente de pegar dados extraídos desses sistemas legados e alimentá-los em um conjunto de ferramentas moderno que só entende JSON — processando-os com jq ou manipulando-os como um objeto simples em JavaScript.

A convenção `@attributes`/`#text` usada por esta ferramenta é uma escolha prática e comum, não uma notação carregada de símbolos. Elementos-folha sem atributos são convertidos diretamente para seu valor de texto, o que mantém legíveis como JSON simples valores de configuração básicos ou um título de RSS, enquanto elementos que possuem atributos são explicitamente separados — assim, basta olhar o resultado convertido para saber exatamente quais valores eram originalmente atributos.