Node.js将Xml转换为JSON以用于大型Xml文件的示例

我对Node.js比较陌生 我试图将83个大小各为400MB的XML文件转换为JSON。

每个文件都包含这样的数据(每个元素都有大量的附加语句):

<case-file> <serial-number>75563140</serial-number> <registration-number>0000000</registration-number> <transaction-date>20130101</transaction-date> <case-file-header> <filing-date>19981002</filing-date> <status-code>686</status-code> <status-date>20130101</status-date> </case-file-header> <case-file-statements> <case-file-statement> <type-code>D10000</type-code> <text>"MUSIC"</text> </case-file-statement> <case-file-statement> <type-code>GS0351</type-code> <text>compact discs</text> </case-file-statement> </case-file-statements> <case-file-event-statements> <case-file-event-statement> <code>PUBO</code> <type>A</type> <description-text>PUBLISHED FOR OPPOSITION</description-text> <date>20130101</date> <number>28</number> </case-file-event-statement> <case-file-event-statement> <code>NPUB</code> <type>O</type> <description-text>NOTICE OF PUBLICATION</description-text> <date>20121212</date> <number>27</number> </case-file-event-statement> </case-file-event-statements> 

我已经尝试了很多不同的节点模块,包括sax,node-xml,node-expat和xml2json。 很显然,我需要从文件中传输数据,并通过XMLparsing器pipe理它,然后将其转换为JSON。

我也尝试阅读一些博客等,试图解释,虽然表面上,如何parsingXml。

在Node中,我首先尝试了sax,但是我无法弄清楚如何以可以将其转换为JSON的格式提取数据。 xml2json不能在stream上工作。 节点xml看起来令人鼓舞,但我无法弄清楚它是如何parsing块有意义的任何方式。 node-expat指向libexpat文档,这似乎需要一个博士学位。 Node元素也是一样的,指向Python的实现,但是没有解释已经实现了什么或者如何使用它。

有人能指点我可以用来开始的例子吗?

我怀疑2 – 3年后这个问题还是有意义的,但是如果有人在这个问题上犯了什么错误,我会说在NPM上的xml-stream看起来对我来说很直接。

如果你是一个想要避免使用GYP的Windows用户, GYP我尝试添加一个非常简单的解决scheme,使用sax从一个XML文件中提取子文件,它被称为no-gyp-xml-stream ,它可能没有太多function,但它确实很简单: https : //www.npmjs.com/package/no-gyp-xml-stream

我想现在你有一个工作过程,考虑你最后的答案。

无论如何,如果你已经用SAX成功parsing了传入的数据,解决scheme可能会简单地把数据放在你的devise的一个对象中,并使用yourStream.write(JSON.stringify(yourObject))来进行stream式处理。