我有这个方法,我从远程服务器接收 XML 响应,我需要将 XML 转换为 JSON,以便 Angular 2 可以处理数据:
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 模块 - 你需要使用 require
来导入它:
let parseString = require('xml2js').parseString;
所以你的代码可以看起来像:
let parseString = require('xml2js').parseString;
let xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
console.dir(result);
});
您将收到下一个输出:
在任何情况下 - 如果你甚至不使用 angular-clior 想要使用你的首选模块来解析 xml - 使用 require
来加载它。
关于Angular:将 XML 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247626/