使用NodeJS将XML解析成JSON及性能比较
发布时间:2020-12-16 08:24:56 所属栏目:百科 来源:网络整理
导读:并不是所有的API都是以JSON格式返回的。我们有时侯不得不处理一些XML。幸运的是有一个NodeJS模块 xml2js可以帮你做这件事。 比如,我们要处理下面这段XML ?xml version="1.0" encoding="UTF-8" ?business companyCode Blog/company ownerNic Raboy/owner emp
并不是所有的API都是以JSON格式返回的。我们有时侯不得不处理一些XML。幸运的是有一个NodeJS模块
xml2js可以帮你做这件事。
比如,我们要处理下面这段XML
<?xml version="1.0" encoding="UTF-8" ?> <business> <company>Code Blog</company> <owner>Nic Raboy</owner> <employee> <firstname>Nic</firstname> <lastname>Raboy</lastname> </employee> <employee> <firstname>Maria</firstname> <lastname>Campos</lastname> </employee> </business>
现在创建一个项目目录,添加一个JavaScript文件,它会进行,如果你使用Terminal,你就可以这样:
mkdir TestApp cd TestApp touch app.js
最关键的一点是安装xml2js库,所以你可以在命令行输入
npm install xml2js
安装成功之后你会在当前目录发现一个 node_modules目录,里面有一个xml2js。
在app.js中添加如下内容:
var parseString = require('xml2js').parseString; var xml = '<?xml version="1.0" encoding="UTF-8" ?><business><company>Code Blog</company><owner>Nic Raboy</owner><employee><firstname>Nic</firstname><lastname>Raboy</lastname></employee><employee><firstname>Maria</firstname><lastname>Campos</lastname></employee></business>'; parseString(xml,function (err,result) { console.dir(JSON.stringify(result)); });
现在你可以用Node.JS运行你的应用了,使用下面的命令:
node app.js
如果一切顺利你会得到JSON格式的输出:
{ "business": { "company": [ "Code Blog" ],"owner": [ "Nic Raboy" ],"employee": [ { "firstname": [ "Nic" ],"lastname": [ "Raboy" ] },{ "firstname": [ "Maria" ],"lastname": [ "Campos" ] } ] } } 注* 可以通过 explicitArray: false 来解决: xml2js.parseString(xmlStr,{ explicitArray : false,ignoreAttrs : true },callbackMethod); 性能比较有人指出xml2js的速度过慢,有人做过性能测试, htmlparser2的性能提升大约5倍以上,如下图 ,测试 地址 另外还有一个使用C语言写的xml解析器 node-expat,性能更好, 安装 npm i node-expat (function () { "use strict"; var expat = require('node-expat') var parser = new expat.Parser('UTF-8') parser.on('startElement',function (name,attrs) { console.log(name,attrs) }) parser.on('endElement',function (name) { console.log(name) }) parser.on('text',function (text) { console.log(text) }) parser.on('error',function (error) { console.error(error) }) parser.write('<html><head><title>Hello World</title></head><body><p>Foobar</p></body></html>') }()) 不过还有一些项目对 expat 进行了封装,简化了调用接口,比如: xml2obj-stream (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |