¡Esta es una revisión vieja del documento!
La generación de los XML en LibreDTE se hace directamente a partir de los datos de un arreglo en PHP, este arreglo a su vez puede ser generado a partir de los datos en formato JSON. Esta es la razón por la cual los ejemplos de LibreDTE, en su mayoría, son entregados en formato JSON.
La conversión es directa desde el JSON al XML, esto es, se toma cada atributo el objeto JSON y se convierte a un tag en el XML. Esto tiene dos ventajas:
El punto 2 implica que si quiero saber cómo agregar un campo X
en el JSON, sólo se debe ir a la documentación de los XML del SII y buscar el nombre y ubicación de dicho campo. Esto es lo que hace que LibreDTE sea posible.
En el siguiente video se explica las alternativas que se analizaron para crear los XML y se explica en más detalles la forma actual mencionada aquí.
El siguiente ejemplo muestra el resultado de convertir un objeto JSON a un XML usando LibreDTE:
{ "root": { "nodo1": "A", "nodo2": "B" } }
<root> <nodo1>A</nodo1> <nodo2>B</nodo2> </root>
Las listas son tratadas de forma especial, en este caso se repite el tag
del índice de la lista:
{ "raiz": { "telefono": [123, 456] } }
<raiz> <telefono>123></telefono> <telefono>456></telefono> </raiz>