Reglas para un XML bien formado
Si el JSON es un objeto con una sola clave, esa clave pasa a ser el elemento raíz. Si no, todo se envuelve en un elemento raíz cuyo nombre puedes elegir. Un array se convierte en un elemento por cada valor con el nombre de su clave, así "tag": ["a", "b"] da dos elementos <tag>. Una lista en el nivel principal se escribe como elementos <item>.
Los nombres XML no pueden tener espacios ni empezar por un dígito, así que esas claves se ajustan, por ejemplo first name pasa a first_name, y la herramienta lista cada clave que tuvo que cambiar. Null y el texto vacío pasan a elementos vacíos como <note/>. Los caracteres especiales se escapan, y los caracteres de control que XML no admite se eliminan. El resultado usa las mismas reglas de @ y #text que XML a JSON, así los datos pueden ir y volver.
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.
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.