Open
Description
Describe the bug
We're encoding some HTML into an XML document. The HTML has an already encoded &
. Going from 3.0.1 to 3.0.2, this sequence is encoded back into a &
instead of being left as &
.
To Reproduce
const html = `<ul style="min-height:1.5em"><li><p style="min-height:1.5em">Peanut butter & jelly.<br /></p></li></ul><p style="min-height:1.5em"><strong>Heading:</strong><br /></p><ul style="min-height:1.5em"><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item; more.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.<br /></p></li></ul>`;
const xml = create({ encoding: "utf-8", version: "1.0" }, { test: html }).end({
prettyPrint: true,
});
Expected behavior
We expect the following XML (3.0.1):
<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?>
<test><ul style=\\"min-height:1.5em\\"><li><p style=\\"min-height:1.5em\\">Peanut butter & jelly.<br /></p></li></ul><p style=\\"min-height:1.5em\\"><strong>Heading:</strong><br /></p><ul style=\\"min-height:1.5em\\"><li><p style=\\"min-height:1.5em\\">list item.</p></li><li><p style=\\"min-height:1.5em\\">list item; more.</p></li><li><p style=\\"min-height:1.5em\\">list item.</p></li><li><p style=\\"min-height:1.5em\\">list item.</p></li><li><p style=\\"min-height:1.5em\\">list item.</p></li><li><p style=\\"min-height:1.5em\\">list item.<br /></p></li></ul></test>
We're getting this, instead (3.0.2):
<test><ul style="min-height:1.5em"><li><p style="min-height:1.5em">Peanut butter & jelly.<br /></p></li></ul><p style="min-height:1.5em"><strong>Heading:</strong><br /></p><ul style="min-height:1.5em"><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item; more.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.</p></li><li><p style="min-height:1.5em">list item.<br /></p></li></ul></test>
The only difference is that first &
is now a &
, making the XML document invalid. Picture to highlight differences:
Version:
- node.js: 16.13.0
- xmlbuilder2 3.0.2
Additional context
Add any other context about the problem here.