Como o XML vira JSON
O XML tem coisas que o JSON não tem: atributos, texto misturado com elementos, elementos repetidos sem uma lista em volta. Todo conversor precisa escolher um mapeamento. Este usa a convenção mais comum, a mesma de muitas bibliotecas:
- cada elemento vira uma chave com o seu nome;
- atributos viram chaves com o prefixo
@; - um elemento só com texto vira esse texto, e um com atributos e texto ganha a chave
#text; - um elemento que aparece mais de uma vez dentro do mesmo pai vira um array.
Números e true/false em textos e atributos viram tipos JSON; o resto continua string.
Exemplo resolvido
<livro id="42" idioma="pt"><titulo>Dom Casmurro</titulo><autor>Machado de Assis</autor><tag>romance</tag><tag>clássico</tag></livro>
vira {"livro": {"@id": 42, "@idioma": "pt", "titulo": "Dom Casmurro", "autor": "Machado de Assis", "tag": ["romance", "clássico"]}}, em várias linhas na página.
Como funciona
A página confere se o XML está bem formado enquanto o divide em tokens e monta o JSON com uma pilha: cada tag de abertura abre um objeto, atributos entram como chaves @nome, texto e CDATA são decodificados e entram como #text, e cada tag de fechamento liga o objeto pronto ao pai, transformando nomes repetidos em arrays. Objetos só com texto viram o próprio texto. Comentários, a declaração XML e o DOCTYPE são descartados. Use JSON para XML no caminho inverso. Tudo roda nesta aba.
Perguntas frequentes
Por que um elemento vira array e outro vira objeto?
Elementos que aparecem várias vezes no mesmo pai viram arrays; os únicos, não. É o mapeamento usual, então trate as duas formas no código.
Como aparecem os atributos?
Como chaves que começam com @, por exemplo @id.
E os namespaces?
O prefixo fica na chave, como nfe:infNFe. As declarações de namespace aparecem como atributos @xmlns.
Meu XML é enviado?
Não. Tudo roda no navegador.
Fontes
- W3C — Extensible Markup Language (XML) 1.0, Fifth Edition
- RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format
- Wikipedia — XML
Revisado em 17 de out. de 2026 · vetores de teste fixtures/dev/xml-to-json/