如何使用Express.js&Backbone.js将XML webservice输出转换为Json

我是Node.js的新手

我遇到过许多XML 2 Json转换,它们都不符合我的要求。 出于所有这种转换支持,我得到一个或另一个错误,因为缺less的东西,不支持的版本。

这是我的代码:

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 = \“.. someurl …”> .. Output ..“

“”包含的内容 现在我正试图将这个输出转换成JSON,并从backbone.js渲染这个,并以一个整洁的方式使这个演示文稿。 但是当我在渲染函数中使用JSON.stringify(this.model)时,输出将是空的。

我在这里做错了什么?

如何做到这一点?

我的疑惑是:我需要从服务器端,即从express.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会将您给它的任何东西(在本例中是一个string!)转换为JSON。 这会导致双重逃跑。 使用res.send和适当的内容types避免了这一点。

你可以使用object: trueparser.toJson获得一个实际的JS对象,但是这意味着在服务器上需要额外的工作:parsing器会build立一个对象, res.json会立即再次序列化它。 这没有必要。

在服务器端进行转换具有优势,因为客户端上的XML处理不能像JSON处理那样无缝工作。