使用node.js拆分大型XML文件

使用node.js拆分大型XML文件,xml,node.js,Xml,Node.js,我有一个1.8gb的XML文件,所有内容都在一行中。 该文件的主要结构如下: <xml> <mutateieoverzicht> <mutatiebericht> ... </mutatiebericht> <mutatiebericht> ... </mutatiebericht> ... </mutatieoverzicht> </xml&

我有一个1.8gb的XML文件,所有内容都在一行中。 该文件的主要结构如下:

<xml>
    <mutateieoverzicht>
        <mutatiebericht> ... </mutatiebericht>
        <mutatiebericht> ... </mutatiebericht>
        ...
    </mutatieoverzicht>
</xml>
但有一句话:

我想解析文件并对存储在db中的mutatiebericht元素执行一些操作。因为一次加载和解析整个文档需要占用大量内存,而且速度非常慢,所以我考虑逐行解析文件。 但是原始文件只有一行

因此,我的第一步是遍历该文件并创建一个新文件,其中每个mutatiebericht位于其自己的行上

我可以在node.js中加载文件并处理内容,但对于字符串与内容的拆分我一无所知。

您可以使用该模块,它将XML文件读取到流中,并在每个元素的开始和结束时发出事件。它看起来像这样未经测试:

var stream = fs.createReadStream(pathtoyourfile);
var xml = new XmlStream(stream);
xml.on('endElement: mutatiebericht', function(item) {
  console.log(item); //item contains your element
});

看看流媒体是否意味着它不会在内存中加载完整的文件?我只是尝试使用它,但它会在文件加载一半时生成5个,并开始使用大量的交换内存。因此,xml流似乎生成了大量内存请求……如果我观察htop中的mem使用情况,它会稳步增加,最终消耗掉整个1gb的内存,并开始交换……]如果有人需要在windows上读取xml并试图避免GYP,接下来,我尝试使用sax在NPM上创建一个非常简单的解析器,名为no gyp xml parser,希望它能让某些人受益: