diff --git a/server/core/xml/XmlParser.js b/server/core/xml/XmlParser.js index eb86598..bca3160 100644 --- a/server/core/xml/XmlParser.js +++ b/server/core/xml/XmlParser.js @@ -452,7 +452,7 @@ class XmlParser extends NodeBase { } toString(options = {}) { - const {encoding = 'utf-8', format = false, noHeader = false} = options; + const {encoding = 'utf-8', format = false, noHeader = false, expandEmpty = false} = options; let deepType = 0; let out = ''; @@ -489,15 +489,19 @@ class XmlParser extends NodeBase { } } - - open = (format && lastType !== TEXT ? indent : ''); - open += `<${node.name}${attrs}>`; - if (node.value) body = nodesToString(node.value, depth + 2); - close = (format && deepType && deepType !== TEXT ? indent : ''); - close += ``; + if (!body && !expandEmpty) { + open = (format && lastType !== TEXT ? indent : ''); + open += `<${node.name}${attrs}/>`; + } else { + open = (format && lastType !== TEXT ? indent : ''); + open += `<${node.name}${attrs}>`; + + close = (format && deepType && deepType !== TEXT ? indent : ''); + close += ``; + } } else if (node.type === TEXT) { body = node.value || ''; } else if (node.type === CDATA) { @@ -516,7 +520,7 @@ class XmlParser extends NodeBase { return result; } - out += nodesToString(this.rawNodes); + out += nodesToString(this.rawNodes) + (format ? '\n' : ''); return out; }