Función para parsear XML a Json en NodeJs

Higarigaoka - Odaiba, Sin comentarios

Hola,

A continuación, les comparto una función recursiva con expresión regular para NodeJs, encargada de convertir un xml a json. Pero (NO FUNCIONA BIEN), porque no convierte correctamente el json cuando este contiene un array dentro del xml, al convertirlo solo conserva un valor.



/**
* Funcion recursiva con expresion regular, encargada de convertir un xml a json.
* (NO FUNCIONA BIEN), porque no convierte correctamente el json cuando este contiene
un array
* dentro del xml, al convertirlo solo conserva un valor.
* Explicación de expresiones regulares para cada ciclo:
* res[0] - devuelve el xml (tal cual)
* res[1] - devuelve el nombre de la etiqueta xml
* res[2] - devuelve el contenido xml
* res[3] - devuelve el nombre de la etiqueta xml en caso de que la etiqueta
se cierre sola. Por ejemplo:<tag />
* @param {*} xml Define el xml a convertir
* @returns retorna un json con el response del xml convertido
*/
function parseXmlToJson(xml) {

console.log(".:Funcion parseXmlToJson().");

const json = {};

for (const res of xml.matchAll(/(?:<(\w*)(?:\s[^>]*)*>)((?:(?!<\1).)*)
(?:<\/\1>)|<(\w*)(?:\s*)*\/>/gm)) {

const key = res[1] || res[3];

// se llama el mismo (recursividad)
const value = res[2] && parseXmlToJson(res[2]);

json[key] = ((value && Object.keys(value).length) ? value : res[2]) || null;

}

return json;

}

0 comentarios :

Publicar un comentario