对于Node.js的任何build议xml到json?

我已经安装了node-xml,但是我不认为它按我期望的方式工作。 并没有例子。 任何build议xml-2-json(js)为node.js? 我也在npm中查看了xml2js,但是不赞成使用,并且人们报告说它被最新的node.js

顺便说一句,我也用快递。 🙂

有许多XMLparsing器 。

像libxmljs和node-o3-xml一样 。 后者由Ajax.org制作和使用,所以应该是稳定的。

至于将XML转换为JSON,我会build议从您的XML创build一个对象结构,然后手动调用JSON.stringify 。 这使您可以完全控制xml数据如何转换为JSON。

然后,您可以将JSON保存在文件/数据库中,或者将其用于请求。

libxmljs和node-o3-xml非常快,但是要注意,它们都需要编译二进制组件。 如果你使用它们作为一个将被别人使用的模块,那么这个警告就更加严重了。

记住一个更高级的观点,记住节点是单线程的。 所以,你所做的任何XMLparsing都将阻止节点进程。 对我来说,这意味着XMLparsing不应该在与主应用程序相同的过程中执行。 然后,一旦将XMLparsing移动到一个单独的进程,可能会牺牲一点速度,以便于安装和更好的可移植性。

就个人而言,这就是为什么我在我的feedparser库中使用sax.js (一个纯粹的JavaScript SAXparsing器)的原因(如果你正在parsingRSS / Atom / RDF提要,请考虑尝试它 – 评论和拉请求是非常值得的) 。 说实话,当parsing一个像RSS feed那样大的东西时,sax.js和libxmljs之间没有可辨别的速度差异。 如果你正在分析巨大的XML文件,你可能会注意到一个区别。 但即使如此,sax.js的一个好处是stream媒体。 与libxmljs不同(上次使用它),您可以将stream传输到sax.js中,而不必将整个XML文档读入内存。 如果你正在分析巨大的文件,你会爱上它!

你在哪里看到xml2js被弃用? 它最近有活动(截至2013年3月),并且与节点0.8一起工作良好。

我用它,很高兴!

另一张海报指出, node-xmltojs可能是最好的方法。

如果你确实想使用JSONML,我不确定为什么在其他答案的JQuery插件正在upvoted:有JSONML节点 :

 npm install jsonml 

例:

 var fs = require('fs'), parse = require('jsonml').parse; var jsonML = parse(fs.readFileSync('myfile.xml')); 

sblom 指出 JsonML可能也值得考虑。 不确定nodejs中的JsonML支持,但是这里已经有了一个jQuery插件 。

easyxml是我的最爱。 我喜欢它自动复数数组的方式。