如何在Node.js Express中响应XML?

4
我将使用node.js和express进行响应:
<set id="1" state="0" name="wd"/>

我尝试过:
xml = require('xml');

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

但是在 Wireshark 中我看到我的响应如下:

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

如何正确发送我的xml?
3个回答

4

xml包将JS对象转换为xml(而您正在传递字符串化的xml)。这不是您所需的。您需要使用libxmljs解析包含xml的字符串以获取实际的xml数据。

我建议您尝试以下方法:

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);

1
当我尝试使用 console.log(xmlDoc) 时,我得到了 Document{errors:[]}。我可能错过了什么? - Kliver Max
我认为 console.log(xmlDoc) 不支持 xml 数据。也许你可以尝试使用 console.dirxml(xmlDoc)。https://nodejs.org/api/console.html#console_console_dirxml_data - Rashomon

1
尝试移除xml()函数。如果设置了Content-type,服务器会将响应发送为xml格式。

0
在ExpressJs中,只需添加content-type并发送有效的XML文档作为xmlContent即可。
response.type('application/xml')
response.send(xmlContent)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接