Angular: Convert XML to JSON
我有这种方法,可以从远程服务器接收XML响应,并且需要将XML转换为JSON,以便Angular 2可以处理数据:
1 2 3 4 5 6 7 | private extractData(res: Response) { let xml = res["_body"] console.log(xml); var parser = require('xml2json'); var json = parser.toJson(xml); return json } |
我正在尝试使用此节点模块:
https://www.npmjs.com/package/xml2json
现在此节点模块是用javascript(不是TypeScript)编写的,所以我不确定是否可以在Angular 2应用程序中使用它。
我收到此编译错误:
ERROR in ./~/isemail/lib/index.js
Module not found: Error: Can't
resolve 'dns' in '/Users/user/ebayTool/node_modules/isemail/lib' @
./~/isemail/lib/index.js 5:12-26 @ ./~/joi/lib/string.js @
./~/joi/lib/index.js @ ./~/xml2json/lib/xml2json.js @
./~/xml2json/lib/index.js @ ./~/xml2json/index.js @
./src/app/hero.service.ts @ ./src/app/app.component.ts @
./src/app/app.module.ts @ ./src/main.ts @ multi
webpack-dev-server/client?http://localhost:4200/ ./src/main.ts
webpack: Failed to compile.
所以我的问题是如何在Angular 2中将XML转换为JSON,以及如何正确导入要在项目中使用的xml2json节点模块?
如果您使用angular-cli引导您的应用程序-它已经随节点模块一起提供了转换xml的功能。
https://github.com/Leonidas-from-XIV/node-xml2js
因此您不需要为此添加额外的模块。由于它是经典的commonJS模块-您需要使用
1 | let parseString = require('xml2js').parseString; |
因此您的代码可以如下所示:
1 2 3 4 5 6 | let parseString = require('xml2js').parseString; let xml ="<root>Hello xml2js!</root>" parseString(xml, function (err, result) { console.dir(result); }); |
您将收到下一个输出:
在任何情况下-如果您甚至不使用angular-clior都想使用您的首选模块来解析xml-请使用
1 2 3 4 5 6 | function parseXml(xmlStr) { var result; var parser = require('xml2js'); parser.Parser().parseString(xmlStr, (e, r) => {result = r}); return result; } |
由于
免责声明我是txml的作者。