我已经安装了node-xml,但我觉得它不像我期望的那样工作。它没有例子。对node.js的xml-2-json(js)的任何建议?我也在npm中查看了xml2js,但它已被弃用,并且人们报告它已被最新的node.js打破
顺便说一句,我也在使用快递。 :)答案 0 :(得分:16)
有很多xml parsers。
赞libxmljs和node-o3-xml。后者由Ajax.org制作和使用,因此它应该是稳定的。
至于将XML转换为JSON,我建议您从xml创建一个对象结构,然后在其上手动调用JSON.stringify
。这使您可以完全控制xml数据如何转换为JSON。
然后,您可以将JSON保存在文件/数据库中,也可以将其提供给请求。
答案 1 :(得分:14)
libxmljs和node-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是我最喜欢的。我喜欢它自动复数数组的方式。