const xmlToObject = (xml) => { const obj = {}; // children Array.from(xml.*).forEach(child => { const name = child.name().toString(); obj[name] = child.hasSimpleContent() ? child.toString() : xmlToObject(child); }); // attributes Array.from(xml.@*).forEach(attr => { obj[`@${attr.name()}`] = attr.toString(); }); return obj; };