diff --git a/package.json b/package.json index f53cad7c6..962204226 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "uglify-js": "3.17.4", "uuid": "9.0.0", "ws": "7.5.6", - "xml2js": "0.5.0" + "xml2js": "0.6.0" }, "optionalDependencies": { "bcrypt": "5.1.0" diff --git a/packages/node_modules/@node-red/nodes/core/parsers/70-XML.js b/packages/node_modules/@node-red/nodes/core/parsers/70-XML.js index 538368730..66fa42cdc 100644 --- a/packages/node_modules/@node-red/nodes/core/parsers/70-XML.js +++ b/packages/node_modules/@node-red/nodes/core/parsers/70-XML.js @@ -33,14 +33,7 @@ module.exports = function(RED) { parseString(value, options, function (err, result) { if (err) { done(err); } else { - // TODO: With xml2js@0.5.0, they return an object with - // a null prototype. This could cause unexpected - // issues. So for now, we have to reconstruct - // the object with a proper prototype. - // Once https://github.com/Leonidas-from-XIV/node-xml2js/pull/674 - // is merged, we can revisit and hopefully remove this hack - value = fixObj(result) - RED.util.setMessageProperty(msg,node.property,value); + RED.util.setMessageProperty(msg,node.property,result); send(msg); done(); } @@ -52,18 +45,4 @@ module.exports = function(RED) { }); } RED.nodes.registerType("xml",XMLNode); - - - function fixObj(obj) { - const res = {} - const keys = Object.keys(obj) - keys.forEach(k => { - if (typeof obj[k] === 'object' && obj[k]) { - res[k] = fixObj(obj[k]) - } else { - res[k] = obj[k] - } - }) - return res - } } diff --git a/packages/node_modules/@node-red/nodes/package.json b/packages/node_modules/@node-red/nodes/package.json index 6bed85bd9..b12c0a2ff 100644 --- a/packages/node_modules/@node-red/nodes/package.json +++ b/packages/node_modules/@node-red/nodes/package.json @@ -44,7 +44,7 @@ "tough-cookie": "4.1.2", "uuid": "9.0.0", "ws": "7.5.6", - "xml2js": "0.5.0", + "xml2js": "0.6.0", "iconv-lite": "0.6.3" } }