xml - 如何使用 Node 转换流将 XML 转换为 JSON

标签 xml json node.js express proxy

如何编写一个转换流,将 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/

相关文章:

xml - Delphi中如何设置文档元素的前缀

java - 使用序列化是个好主意吗?

javascript - Winston 输出 json 而不是格式化字符串

node.js - NodeJS : Read csv file from sftp server and convert it to JSON

java - XML 保留前导空格,但不保留尾随空格

java org.json 比较对象

javascript - JSON Loop 数组是一个对象的值

c# - JSON 和 XML 的独立 Web 服务?

javascript - 如何从对象生成具有多级标题的数据透视表?

node.js - 时刻时区 : unix timestamps with timezones