You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CDATA is written with indentation and newlines #14
This is is not the expected XML output.
The CDATA section is not a TAG and should not be handled as one and therefore not be indented.
Sure, its easier to read, but its not 100% correct.
It would be great to fix that or make a config parameter for that behaviour.
example code:
var xmljs = require('xml-js');
var xmlIn = '<?xml version="1.0"?>\n<group>\n\t<name><![CDATA[An example name]]></name>\n</group>';
console.log('xmlIn:\n',xmlIn);
var jsonIn = xmljs.xml2json(xmlIn, {
compact: true
});
var obj = JSON.parse(jsonIn);
// code to modify obj
obj.group.name._cdata = 'My modified name';
var jsonOut = JSON.stringify(obj);
var xmlOut = xmljs.json2xml(jsonOut, {
compact : true,
spaces : 4,
fullTagEmptyElement: true
});
console.log('xmlOut:\n',xmlOut);
Solution
file: js2xml.js
Function: writeElementsCompact, Line 143
case options.cdataKey: xml += writeCdata(element, options); break;
Activity
nashwaan commentedon Apr 26, 2017
@brathering Are you sure CData should not be proceeded by spaces or indentation at all?
I am thinking that there could be multiple CData inside an element:
Following your proposal, they will be like this:
Hagedihag commentedon Apr 26, 2017
Yes, I'm quite sure, because CDATA is not a tag and can be used inline in text:
If you use xmllint to format the above xml, it also doesn't add spaces and indentation:
nashwaan commentedon Apr 26, 2017
Thanks for confirming this.
I have published v1.1.0 which supports the suggested behavior.
Also, to support old behavior,
indentCdata: trueflag can be set in options object.@brathering Please let me know whether the new result is as per your expectations or not.
nashwaan commentedon Apr 27, 2017
v1.1.0 is published now.
Hagedihag commentedon Apr 27, 2017
Thank you very much for the quick update, looks good now and works as expected.