Kliver Max
Kliver Max

Reputation: 5299

How to response XML with node.js express?

I want to response this using node.js and express:

<set id="1" state="0" name="wd"/>

I tried:

xml = require('xml');

res.set('Content-Type', 'text/xml');
res.send(xml('<set id="1" state="0" name="wd"/>'));

But in Wireshark i see that my response looks:

&lt;set id=&quot;1&quot; state=&quot;0&quot; name=&quot;wd&quot;/&gt;

How to send my xml correctly?

Upvotes: 4

Views: 8223

Answers (3)

Hamfri
Hamfri

Reputation: 2219

In ExpressJs Simply add the content-type and send a valid XML document as the xmlContent

response.type('application/xml')
response.send(xmlContent)

Upvotes: 0

Rashomon
Rashomon

Reputation: 6782

xml package converts JS objects to xml (and you are passing a stringified xml). Not what you need. You need to parse the string containing xml to get actual xml data using libxmljs.

I would try this:

const libxmljs = require("libxmljs");


let stringifiedXml = '<set id="1" state="0" name="wd"/>';
let xmlDoc = libxmljs.parseXml(stringifiedXml);

res.set('Content-Type', 'text/xml');
res.send(xmlDoc);

Upvotes: 4

ISD
ISD

Reputation: 1012

Try removing xml() function. If you set Content-type, the server would send response as xml.

Upvotes: 1

Related Questions