Conversión predecible
El JSON debe contener una única raíz. Los arrays crean elementos XML repetidos, las claves @ se convierten en atributos y #text en texto.
Límites seguros
Máximo 10 MB, 100.000 elementos y 128 niveles. Se rechazan nombres XML inválidos y valores no escalares en atributos o texto.
¿Necesitas la conversión inversa? Convierte XML a JSON.
Precisión y estructura
Se rechazan enteros inseguros, decimales redondeados, valores nulos y arrays como raíz para evitar pérdidas silenciosas. Los atributos deben contener valores escalares y solo se permite un elemento raíz.
Arrays y objetos vacíos
Solo los arrays con al menos dos elementos pueden convertirse en elementos XML repetidos sin perder su estructura. Se rechazan arrays vacíos, de un único elemento o anidados, objetos vacíos y texto mezclado con elementos hijos. XML no conserva los tipos numéricos ni booleanos de JSON.
Namespaces en JSON
Para generar nombres como p:elemento debes incluir la declaración @xmlns:p en el propio elemento o en un antecesor. Se rechazan prefijos sin declarar, atributos duplicados por alias de namespace y redefiniciones inválidas de xml o xmlns. La salida se valida de nuevo como XML.
Tabulaciones y saltos de línea en atributos XML
Un atributo JSON puede contener una tabulación, un retorno de carro o un salto de línea. Si se escriben literalmente en XML, un lector conforme a XML 1.0 los normaliza a espacios. Por eso la conversión utiliza referencias numéricas de caracteres y valida el documento generado. Los retornos de carro del texto también se codifican para evitar cambios de contenido.
Comprueba el resultado en el sistema de destino
Por ejemplo, {"root":{"@code":"A B","#text":"línea 1 línea 2"}} conserva esos caracteres mediante referencias XML. Vuelve a abrir el archivo con un analizador XML independiente cuando necesites exactitud de valores. Los tipos numéricos y booleanos de JSON no se conservan como tipos XML. Para mejorar la presentación utiliza formatear XML; para comprobar la conversión inversa, XML a JSON.