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

时间:2011-04-15 03:40:39

标签: xml json node.js

我已经安装了node-xml,但我觉得它不像我期望的那样工作。它没有例子。对node.js的xml-2-json(js)的任何建议?我也在npm中查看了xml2js,但它已被弃用,并且人们报告它已被最新的node.js打破

顺便说一句,我也在使用快递。 :)

8 个答案:

答案 0 :(得分:16)

有很多xml parsers

libxmljsnode-o3-xml。后者由Ajax.org制作和使用,因此它应该是稳定的。

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

然后,您可以将JSON保存在文件/数据库中,也可以将其提供给请求。

答案 1 :(得分:14)

libxmljsnode-o3-xml非常快速,但要注意它们都需要编译二进制组件。如果你将它们用于其他人将使用的模块,那么这个警告会更加严重。

暂时采用更高级别的视图,请记住该节点是单线程的。因此,您执行的任何XML解析都将阻止节点进程。对我而言,这意味着不应该在与主应用程序相同的过程中执行XML解析。然后,一旦将XML解析移动到单独的进程,可能会牺牲一点速度,以便于安装和更高的可移植性。

就个人而言,这就是我在sax.js库中使用feedparser - 纯JavaScript SAX解析器的原因(如果你正在解析RSS / Atom / RDF提要,请考虑尝试一下 - 评论和拉取请求非常受欢迎)。老实说,在解析像RSS提要这样大的东西时,sax.js和libxmljs之间没有明显的速度差异。如果您正在解析大量的XML文件,我想您可能会注意到有所不同。但即便如此,关于sax.js的一个好处是流媒体。与libxmljs(我最后使用它)不同,您可以将流传输到sax.js,而不必将整个XML文档读入内存。如果您正在解析大量文件,那么您一定会喜欢它!

答案 2 :(得分:11)

您认为xml2js被弃用的地方在哪里?它最近有活动(截至2013年3月),并且在节点0.8上运行良好。

我用它并且很满意!

答案 3 :(得分:1)

sblom pointed JsonML jQuery plugin here也可能值得考虑。不确定nodejs中的JsonML支持,但已经有{{3}}。

答案 4 :(得分:1)

答案 5 :(得分:1)

正如另一张海报所指出的那样,node-xmltojs可能是最好的方式。

如果您确实想使用JSONML,我不确定为什么另一个答案中的JQuery插件被投票赞成:JSONML for node

npm install jsonml

示例:

var fs = require('fs'),
  parse = require('jsonml').parse;

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

答案 6 :(得分:0)

要在Node js中将XML转换为JSON,可以使用xml2json包。

要安装该软件包,请执行以下操作:-npm install --save xml2json

添加代码段:-

var parser = require('xml2json');

var xml = "<foo attr=\"value\">bar</foo>";
console.log("input -> %s", xml)

// xml to json
var json = parser.toJson(xml);
console.log("to json -> %s", json);

有关更多详细信息,请访问:-xml2json

答案 7 :(得分:-2)

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