gpt4 book ai didi

javascript - 快速请求错误: socket hangup while parsing large xml

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:04 25 4
gpt4 key购买 nike

我尝试在工作 Node Nodejs 应用程序中将 300MB xml 文件解析为 json,因此客户端向主 Web 应用程序发出请求,服务器使用文件位置向工作服务器执行请求,工作服务器完成解析 xml 后,将其保存到 json 文件并将其位置返回到主服务器。

对于 130MB 以下的 xml 文件,一切正常,但是当遇到大文件时,工作服务器会在响应到达它收到的主服务器时完成文件解析并保存它:

 { [Error: socket hang up] code: 'ECONNRESET' }

我尝试在请求选项中使用超时,但它仍然发生。

request
.post({
url:'http://localhost:6666/parsexml',
formData: {filePath:filePath},
json: true
},function(err,httpResponse,jsonResObj){
// throws error here
})
  • xml 解析器工作器向服务器返回 200 消息,然后崩溃。

关于如何实现这个的任何建议?

最佳答案

也许您必须使用不同的 XML 解析器,例如 xml-stream ,可以处理大型(500+ MB)文件。

如何安装

使用以下命令安装它:npm install -g xml-stream

如何在您的应用中使用它

在您的项目中需要它并传递 ReadFile 对象来初始化它:

var fs        = require('fs');
var XmlStream = require('xml-stream');
/*
* Pass the ReadStream object to xml-stream
*/
var stream=fs.createReadStream('file_name.xml');
var xml = new XmlStream(stream);
/*
*Code continues here
*/

如果您只想从 XML 中提取 id 的值并打印它们,这是执行此操作的代码:

var fs        = require('fs')
var XmlStream = require('xml-stream') ;
var stream=fs.createReadStream('some-large-XML.xml');
var xml = new XmlStream(stream);
xml.preserve('id', true);
xml.collect('subitem');
xml.on('endElement: id', function(item) {
console.log(item);
});

更详细的信息可以查看here .

关于javascript - 快速请求错误: socket hangup while parsing large xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410543/

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