【问题标题】:How can I use a node Transform Stream to turn XML into JSON如何使用节点转换流将 XML 转换为 JSON
【发布时间】:2014-07-16 19:06:43
【问题描述】:

如何编写转换流,将节点 Req 对象中的 XML 文本转换为 JSON,以便我可以将其直接通过管道传输到节点响应?

我正在围绕基于 XML 的 Web 服务构建一种代理或包装器,以将 XML 转换为 RESTFul JSON api。思路是这样的:

用户向代理发出请求,代理向 XML 服务发送请求,并返回一个节点响应流,该流被转换(通过我还不能做的魔术流)转换为 JSON,然后直接通过管道传输返回响应并发送回原始用户。

我可以让它与 Express 或简单的节点代理应用程序一起很好地工作,除了 XML 到 JSON 部分。我知道我需要构建一个由他的stream-handbook 中的子堆栈定义的转换流,我想我可以使用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;

【问题讨论】:

    标签: xml json node.js express proxy


    【解决方案1】:

    最好的办法是创建一个Transform stream,它在内部使用像sax 这样的模块来解析XML。从那里开始,由您决定如何格式化/输出 JSON(尤其是您希望如何处理 XML 节点属性等)。

    另外,我不熟悉superagent,但是当xml请求失败时你需要处理这种情况,所以你知道res.send(500);

    【讨论】:

    • 接受,因为这为我指明了正确的方向。但是我并没有一直追求它,因为它对我的项目来说是错误的方向
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2011-01-07
    • 2018-05-31
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多