gpt4 book ai didi

xml - 如何使用 Express.js 和 Backbone.js 将 XML Web 服务输出转换为 Json

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:24 26 4
gpt4 key购买 nike

我是 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=\"..someurl...">..输出.."

用“”括起来。现在我正在尝试将此输出转换为 json 并从backbone.js 渲染它,并以简洁的方式进行演示。但是当我在渲染函数中使用 JSON.stringify(this.model) 时,输出将为空。

我在这里做错了什么?

如何实现这一目标?

我的疑问是:我是否需要从服务器端(即从express.js或backbone)将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: trueparser.toJson 中获取实际的 JS 对象,但这意味着服务器上需要额外的工作:解析器将构建一个对象和 res.json会立即再次序列化它。那没有必要。

在服务器端进行转换具有优势,因为客户端上的 XML 处理不如 JSON 处理那么顺利和无缝。

关于xml - 如何使用 Express.js 和 Backbone.js 将 XML Web 服务输出转换为 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com