如何编写一个转换流,将 Node Req 对象中的 XML 文本转换为 JSON,以便我可以将其直接通过管道传输到 Node 响应?
我正在围绕基于 XML 的 Web 服务构建一种代理或包装器,以将 XML 转换为 RESTFul JSON api。想法是这样的:
用户向代理发出请求,代理向 XML 服务发送请求,并返回一个 Node 响应流,该响应流被转换(通过魔法流,我还不能做)为 JSON,然后直接通过管道传输回响应并发送回原始用户。
我可以让它与 Express 或简单的 Node Proxy 应用程序一起很好地工作,但 XML 到 JSON 部分除外。我知道我需要构建一个由他的 stream-handbook 中的 substack 定义的 Transform 流。我想我可以利用streamify ,但我不确定如何继续。
这是我为我的 Express 4 应用程序设置的路线。我正在使用 superagent 来发出第二个请求。这可以工作,但不会改变。
'use strict';
var express = require('express'),
router = express.Router(),
request = require('superagent'),
router.get('/', function(req, res) {
request
.post('http://server.com/some.xml')
// .pipe(converter(res))
.pipe(res)
});
module.exports = router;
最佳答案
你最好的选择是创建一个 Transform stream内部使用类似 sax 的模块来解析 XML。从那里开始,您可以决定如何格式化/输出 JSON(尤其是如何处理 XML Node 属性等)。
此外,我不熟悉 superagent
,但您需要在 xml 请求失败时处理这种情况,以便您知道改为 res.send(500);
。
关于xml - 如何使用 Node 转换流将 XML 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23896705/