gpt4 book ai didi

xml - 如何在 Node.js 中转换(简单的)流式 XML?

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:50 25 4
gpt4 key购买 nike

我正在通过我的 Node.js 服务器代理 S3 调用,并希望在代理之前调整几个返回的 XML 值。除了这些调整之外,我想保留每个响应的其余部分,例如响应 header 。

我当然可以先收集整个响应,解析 XML,转换它,然后将其返回,但对于大型响应,这既缓慢又占用大量内存。有没有一种方法可以基本实现 stream.pipe() 但可能带有转换功能?

我看过 sax-js ,它可以管道但没有任何转换能力。我是否必须求助于监听低级解析事件并自己生成和输出生成的 XML?

我也看过 libxmljs 它有一个“推送解析器”和一个更高级别的 DOM API,但看起来我必须再次自己收听低级别的解析事件,而且我不确定我是否可以流式传输生成的 XML 在生成时输出

有没有比这两种方法更简单的方法?谢谢!

附言XML 调整很简单:只需从一些文本元素中删除一个子字符串。

最佳答案

在这种情况下,您可以将所有 block 收集在一起,如下所示:

var data='', tstream = new stream.Transform();
tstream._transform = function (chunk, encoding, done) {
data += chunk.toString();
done();
};

然后在最后调用 _flush 函数时执行您需要的操作:

tstream._flush = function(done){
data += 'hola muheres';
this.push(data);
done();
};

所以它看起来像:

req.pipe(anotherstream).pipe(tstream).pipe(response);

关于xml - 如何在 Node.js 中转换(简单的)流式 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793257/

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