Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点fs.readstream()输出<;缓冲器3c 3f 78 6d 6c…>;而不是可读的数据_Javascript_Node.js_Stream_Hex_Node.js Stream - Fatal编程技术网

Javascript 节点fs.readstream()输出<;缓冲器3c 3f 78 6d 6c…>;而不是可读的数据

Javascript 节点fs.readstream()输出<;缓冲器3c 3f 78 6d 6c…>;而不是可读的数据,javascript,node.js,stream,hex,node.js-stream,Javascript,Node.js,Stream,Hex,Node.js Stream,我正在节点Js中读取一个大XML文件(~1.5gb)。我试图对它进行流式处理,并对大量数据进行处理,但我发现很难理解文档 我目前的简单代码是: var fs = require('fs'); var stream = fs.createReadStream('xml/bigxmlfile.xml'); stream.on('data', function(chunk){ console.log(chunk) }); 控制台提供了一组bufferhex(我认为)代码,如下所示: &

我正在节点Js中读取一个大XML文件(~1.5gb)。我试图对它进行流式处理,并对大量数据进行处理,但我发现很难理解文档

我目前的简单代码是:

var fs = require('fs');

var stream = fs.createReadStream('xml/bigxmlfile.xml');

stream.on('data', function(chunk){ 
    console.log(chunk)
});
控制台提供了一组
buffer
hex(我认为)代码,如下所示:

<Buffer 65 61 6e 2d 63 75 74 20 67 72 69 64 20 6c 69 6e 65 73 20 74 68 65 20 73 70 72 65 61 64 20 63 6f 6c 6c 61 72 20 61 6e 64 20 6d 69 74 65 72 65 64 2c 20 74 ...>
<Buffer 65 79 77 6f 72 64 73 3e 3c 2f 6b 65 79 77 6f 72 64 73 3e 3c 75 70 63 3e 34 32 39 35 36 30 31 33 38 33 38 39 3c 2f 75 70 63 3e 3c 6d 31 3e 36 38 38 39 31 ...>
<Buffer 6f 75 6e 74 3e 3c 63 75 72 72 65 6e 63 79 3e 55 53 44 3c 2f 63 75 72 72 65 6e 63 79 3e 3c 2f 63 6f 73 74 3e 3c 69 6e 66 6f 72 6d 61 74 69 6f 6e 3e 3c 2f ...>
<Buffer 65 20 62 72 69 65 66 73 20 74 68 61 74 20 73 69 74 20 63 6f 6d 66 6f 72 74 61 62 6c 79 20 61 74 20 74 68 65 20 68 69 70 73 2e 20 43 6f 6c 6f 72 28 73 29 ...>
<Buffer 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 73 68 6f 72 74 3e 43 7a 65 63 68 20 63 72 79 73 74 61 6c 73 20 73 70 72 69 6e 6b 6c 65 20 61 20 73 6c 69 6e 67 ...>
(因此我可以读取XML流并将其解析为JSON),但我在控制台中得到了
undefined
结果


如何将这些数据转换成有用的数据?

您可以这样设置流编码:

var stream = fs.createReadStream('xml/lsnordstrom.xml');
stream.setEncoding('utf8');
或将缓冲区转换为字符串:

stream.on('data', function(chunk) { 
  chunk.toString('utf8');
});

另外,要像您正在尝试的那样解析XML,您需要一个流解析器。

@r3mus很好,没有看到。太好了。在这里写了一个后续问题,您可能会对此有所贡献:正如我使用缓冲区的方式一样。如何转换xml格式只需要说声谢谢。我一直在使用node,得到的输出都是

stream.on('data', function(chunk) { 
  chunk.toString('utf8');
});