在 Node.js 中解析大型 XML 文件

Posted

技术标签:

【中文标题】在 Node.js 中解析大型 XML 文件【英文标题】:Parsing large XML file in Node.js 【发布时间】:2015-09-15 05:38:52 【问题描述】:

所以我有一个大于 70mb 的 XML 文件。我想在 Node.js 中解析这些数据,最终对其进行数据可视化。首先,我认为最好使用 JSON 而不是 XML,因为 Node.js 更适合与 JSON 一起使用。所以我计划使用 xml2json 节点模块将 xml 解析为 JSON,但我似乎无法将 xml 文件写入变量,因为它太大了。我试图用下面的代码做到这一点。

var fs = require('fs');


fs.readFile(__dirname + '/xml/ipg140114.xml', 'utf8', function(err, data, parseXml) 
    if(err) 
        return console.log(err);
     
);

我收到堆栈跟踪错误。 有什么更好的方法可以将此文件转换为 JSON,以便我可以使用 Node 解析它?我对 Node 很陌生,所以如果我的方法有误,请告诉我。提前致谢!

【问题讨论】:

Node.js Example to convert Xml to JSON for large Xml file的可能重复 【参考方案1】:

Json2xml 要求您将整个文件加载到内存中。您可以分配更多内存,但我建议直接从文件中解析 XML。

NPM 上还有其他库,例如 xml-stream,它们允许您直接从文件中解析 XML,而无需将其全部加载到内存中。

我对@9​​87654324@ 的个人问题是它依赖于GYP,如果您是Windows 用户,这可能会很麻烦。 我向 NPM 添加了一个非常基本的解析器 no-gyp-xml-stream,这个解析器只依赖于 sax。但它有点简陋,可能不适合您的需求。 但是,如果有人需要任何东西,我愿意改进它: https://www.npmjs.com/package/no-gyp-xml-stream

【讨论】:

以上是关于在 Node.js 中解析大型 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Node.js 中解析 XML

如何在 JavaScript node.js 中将 xml 文件解析为数组

在 Node js 中解析 XML:Zapier

在 Node.js 中解析巨大的日志文件 - 逐行读取

如何在资源有限的 Haskell 中解析大型 XML 文件?

node.js