对 Node.js 的 xml 到 json 有啥建议吗?

Posted

技术标签:

【中文标题】对 Node.js 的 xml 到 json 有啥建议吗?【英文标题】:Any recommendation for xml to json for Node.js?对 Node.js 的 xml 到 json 有什么建议吗? 【发布时间】:2011-08-06 00:59:38 【问题描述】:

我已经安装了 node-xml,但我不认为它按我期望的方式工作。它没有例子。对 node.js 的 xml-2-json (js) 有什么建议吗?我还查看了 npm 中的 xml2js,但它已被弃用,人们报告说它被最新的 node.js 破坏了

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

【问题讨论】:

xml2js 没有被弃用,但是很长一段时间没有更新。唯一的问题是,如果 XML 大且速度较慢,它会返回错误的输出。 【参考方案1】:

有很多xml parsers。

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

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

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

【讨论】:

你知道node-o3-fastxml和node-xml2js的基准吗? @murvinlai 还没有,但你应该可以自己写一个。 Node 还很年轻,所以我们手工做这些事情。 如何将 xml 转换为 json 对象? node-xml2js 背后的好处是它有 XML(字符串)到 javascript 对象,反之亦然。 我在 npm 上找不到 node-o3-fastxml。但是,node-xml2js 对 fast-xml-parser 的基准可以找到here【参考方案2】:

sblom pointed out JsonML 这可能也值得考虑。不确定 nodejs 是否支持 JsonML,但已经有一个 jQuery plugin here。

【讨论】:

【参考方案3】:

结账http://hemanth.github.com/node-rsj/

【讨论】:

RSJ 似乎只用于 RSS 提要,而不是任意 XML。【参考方案4】:

libxmljs 和node-o3-xml 既好又快,但要注意它们都需要编译二进制组件。如果您将它们用于将被其他人使用的模块,那么这个警告就更加严重了。

暂时看一下更高级别的视图,记住节点是单线程的。因此,您所做的任何 XML 解析都会阻塞节点进程。对我来说,这意味着 XML 解析永远不应在与您的主应用程序相同的进程中执行。然后,一旦您将 XML 解析转移到一个单独的进程中,可能会牺牲一点速度来换取易于安装和更大的可移植性。

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

【讨论】:

【参考方案5】:

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

【讨论】:

貌似只有xml转json,原贴想要反过来。 恰恰相反。对象转 XML。【参考方案6】:

您在哪里看到 xml2js 已弃用?它最近有活动(截至 2013 年 3 月),并且在节点 0.8 上运行良好。

我使用它并且很满意!

【讨论】:

【参考方案7】:

正如另一张海报所指出的,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'));

【讨论】:

3年无更新,Node 4下安装失败,不推荐。【参考方案8】:

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

安装包:- npm install --save xml2json

添加代码sn-p:-

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

【讨论】:

以上是关于对 Node.js 的 xml 到 json 有啥建议吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

Socket.IO 对 Node.js 有啥作用

从 node.js 访问 xml 内容

Node.js-nodejs可否读取远程文件到本地 有没有像php file

jQuery 和 Node.js 有啥区别? [关闭]

使用 Node.js 对 JSON 中的字符串大小有限制吗?