Releases: nashwaan/xml-js
Faster internal processing for js2xml and json2xml
Additional Processing via Custom Functions
This release adds a major feature that allows to pass in custom functions for additional processing.
Example to make all parsed element names in upper case:
var js = convert.xml2js(xml, {compact: false, elementNameFn: function(name) {
return name.toUpperCase();
}});
Support attributes indentation and few minor improvements
This release supports a new option indentAttributes
to indent attributes in the xml. See below example from this thread:
<parent
bar="1"
baz="hello"
>
<child
attr1="a"
attr2="b"
/>
</parent>
Also, support for converting js object of {a: 'hi'}
rather than {a: {_text: 'hi'}}
to <a>hi</a>
.
I previously didn't want to support this for the reasons outlined here.
I am allowing this behavior in this library as it can be safe to handle this scenario when transforming js2xml
only.
xml2js
conversion from <a>hi</a>
to {a: 'hi'}
rather than {a: {_text: 'hi'}}
is still not supported as this could be dangerous for the reasons explained here.
Better handling of basic xml entity codes
This release addresses some issues on escaping entity codes (e.g &
) in xml
document.
The new implementation can cause a slight breaking change:
- Converting from
xml
tojs
will decode the 5 entity codes&
<
>
"
'
into&
<
>
"
'
. For example,&
WILL be changed to&
character (instead of keeping it&
). Also,{sanitize: true}
option is deprecated. - Converting from
js
toxml
will cause 3 characters&
<
>
(instead of 5 characters) if found in node text to be transformed into&
<
>
. And will cause 1 character"
(instead of 5 characters) if found in node attribute to be transformed into"
.
For more discussion, see this issue.
Support parsing of Processing Instructions
Parsing of processing instructions such as <?go there?>
and <?go to="there"?>
are now supported. Note that for the second case, the parser by default will not generate attributes unless flag {instructionHasAttributes: true}
is set. See discussion for more details.
AlwaysArray and Multiple Comments & CData in Compact Mode
Setting {compact: true, alwaysArray: true}
when converting from xml
to js
/json
will always put sub-element (even if it is only one) into an array of objects. This can simplify the client code a little so that it can always expect the content of an element is an array rather than checking everytime whether it is an array or object.
Also, multiple comments and multiple CDatas are now supported in compact mode.
Support for DOCTYPE and no indentation for CData
- Parsing of
DOCTYPE
is now supported but in a simple way: its content will be a string and will not be parsed further (see discussion). - XML output of CData will not be proceeded by indentation by default (see discussion). However, to get old behavior where CData is indented in the output, use
{indentCdata: true}
.
First Stable Release
First major and stable release.