Cómo se traslada el XML a JSON
El elemento raíz se convierte en la única clave del resultado. Un elemento que solo contiene texto pasa a ser un valor simple, así <name>Ana</name> se convierte en "name": "Ana". Los atributos se escriben con un prefijo, @id por defecto, y cuando un elemento tiene atributos y texto, el texto se guarda en #text. Los elementos con el mismo nombre que van seguidos se convierten en un array. Las secciones CDATA se leen como texto; los comentarios y las instrucciones de procesamiento se omiten.
Con la detección de números y booleanos activada, valores como 89.90 y true pasan a ser tipos reales de JSON. Los códigos con cero inicial, como códigos de barras o códigos postales, y los números de más de 15 dígitos se quedan como texto, así no se pierde nada. Ten en cuenta que un elemento que aparece una sola vez no es un array; si tu código siempre espera una lista, comprueba ese caso.
Sobre XML
XML (Extensible Markup Language) guarda los datos en elementos anidados con etiquetas de apertura y cierre, y puede añadir atributos a cada elemento. Es habitual en feeds, facturas electrónicas, archivos de Office y servicios SOAP.
Sobre JSON
JSON (JavaScript Object Notation) escribe los datos como objetos entre llaves, listas entre corchetes, texto entre comillas dobles, números, true, false y null. Casi todas las API y lenguajes de programación lo leen.