DOMParser serializeToString HTML entities issue

265 Views Asked by At

I have some xml that I am trying to convert to xml document using DOMParser, make some changes and then convert back to xml string. But when I convert back to string using XMLSerializer, it changes <food> to <food>, I want to keep it same.

Code:

var text = "<foodshop><food>" +
"<title>All type of &lt;food&gt; available</title>" +
"<name>Indian dish</name>" +
"<date>5th september</date>" +
"</food></foodshop>";
var parser = new DOMParser();
var document = parser.parseFromString( text, 'text/xml' );

var serializer = new XMLSerializer();
var writetofile = serializer.serializeToString( document );
console.log(writetofile);

Output:

<foodshop><food><title>All type of &lt;food> available</title><name>Indian dish</name><date>5th september</date></food></foodshop>
1

There are 1 best solutions below

0
user21067413 On

I was able to solve this using another lib 'libxmljs' along with xmldom as below:

const x = require('libxmljs');
const { DOMParser } = require('xmldom');
const { XMLSerializer } = require('xmldom');

var text = "<foodshop><food>" +
"<title>All type of &lt;food&gt; available</title>" +
"<name>Indian dish</name>" +
"<date>5th september</date>" +
"</food></foodshop>";
var parser = new DOMParser();
var document = parser.parseFromString( text, 'text/xml' );

var serializer = new XMLSerializer();
var writetofile = serializer.serializeToString( document );
var doc = x.parseXmlString(stringDoc)
console.log(doc.toString()); 

Output:

<foodshop><food><title>All type of &lt;food&gt; available</title><name>Indian dish</name><date>5th september</date></food></foodshop>