Como o XML é mapeado para JSON
O elemento raiz vira a única chave do resultado. Um elemento que só contém texto vira um valor simples, então <nome>Ana</nome> se transforma em "nome": "Ana". Os atributos são escritos com um prefixo, @id por padrão, e quando um elemento tem atributos e texto, o texto fica em #text. Elementos com o mesmo nome lado a lado viram um array. Seções CDATA são lidas como texto, comentários e instruções de processamento ficam de fora.
Com o reconhecimento de números e booleanos ativado, valores como 89.90 e true viram tipos JSON de verdade. Códigos com zero à esquerda, como códigos de barras ou CEPs, e números com mais de 15 dígitos continuam como texto, então nada se perde. Note que um elemento que aparece uma só vez não vira array; se o seu código sempre espera uma lista, trate esse caso.
Sobre XML
XML (Extensible Markup Language) guarda dados em elementos aninhados com tags de abertura e fechamento, e pode acrescentar atributos a cada elemento. É comum em feeds, notas fiscais eletrônicas, arquivos do Office e serviços SOAP.
Sobre JSON
JSON (JavaScript Object Notation) escreve dados como objetos entre chaves, listas entre colchetes, texto entre aspas duplas, números, true, false e null. Quase toda API e linguagem de programação lê JSON.