我是Node的新手.js
我遇到过许多XML 2 Json转换,但没有一个满足我的需求。在所有这些转换支持中,我得到一个或另一个错误,因为缺少某些内容并且不支持该版本。
这是我的代码:
exports.index = function(req, res){
var request = require('request');
var url = 'xml-output-throwing-url';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.json(body);
}
});
};
这会将 xml 呈现为:"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"..某处...">..输出.."
用"括起来。现在我正在尝试将此输出转换为 json 并从主干网渲染它.js并以整洁的方式进行此演示。但是当我在渲染函数中使用 JSON.stringify(this.model) 时,输出将为空。
我在这里做错了什么?
如何实现这一点?
我的疑问是:我是否需要从服务器端(即从快递或主干.js将 xml 转换为 json。其中哪个最好?
提前致谢
https://github.com/buglabs/node-xml2json 听起来是一个很好的起点。
var parser = require('xml2json');
// ...
exports.index = function(req, res){
var request = require('request');
var url = 'xml-output-throwing-url';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var result = parser.toJson(body, {
object: false,
reversible: false,
coerce: true,
sanitize: true,
trim: true,
arrayNotation: false
});
res.set('Content-Type', 'application/json');
res.send(result);
}
});
};
请注意,我使用 res.send
而不是 res.json
,因为res.json
将您提供给它的任何内容(在本例中为字符串!)转换为 JSON。这将导致双重转义。将res.send
与适当的内容类型一起使用可避免这种情况。
您可以使用object: true
从parser.toJson
中获取实际的JS对象,但这意味着服务器上的额外工作:解析器将构建一个对象,res.json
将立即再次序列化它。那没必要。
在服务器端进行转换具有优势,因为客户端上的 XML 处理不如 JSON 处理那样工作得那么好且无缝。