Angular:将 XML 转换为 JSON

标签 angular

我有这个方法,我从远程服务器接收 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);
});

您将收到下一个输出:

enter image description here

在任何情况下 - 如果你甚至不使用 angular-clior 想要使用你的首选模块来解析 xml - 使用 require 来加载它。

关于Angular:将 XML 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247626/

相关文章:

angular - Ionic 5 Angular - 将 ion-slides 迁移到 swiper.js

html - 设置 ng-bootstrap 轮播的宽度

javascript - 在 Typescript 中嵌套模板字符串

angular - 如何在不同时提供 `node_modules` 中的所有文件的情况下提供 AngularJS 2 应用程序?

node.js - 在客户端下载压缩文件夹在 Angular+Node 中不起作用(MEAN)

javascript - 默认为 MomentJS/Date 对象 UTC

angular - 以 Angular 发送 Action 的正确方法是什么?

angular - Angular 应用的 Nginx 反向代理

html - Angular 5 : Different foreground color for select list option text

angular - 在 Angular 6 中动态选择选项