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