You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8中如何将XML转为JSON?NgxXml2jsonService导入失败

在Angular 8中实现XML转JSON的两种有效方法

方法一:修复ngx-xml2json的使用流程

你之前导入NgxXml2jsonService无效,核心问题是未完成模块注册步骤,完整操作如下:

  1. 安装依赖
npm install ngx-xml2json --save
  1. 在根模块(app.module.ts)中注册模块
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgxXml2jsonModule } from 'ngx-xml2json';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, NgxXml2jsonModule], // 将模块加入imports数组
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
  1. 在组件中注入服务并转换XML
import { Component } from '@angular/core';
import { NgxXml2jsonService } from 'ngx-xml2json';

@Component({
  selector: 'app-root',
  template: `<!-- 你的组件模板 -->`
})
export class AppComponent {
  constructor(private xmlService: NgxXml2jsonService) {}

  convertXmlToJson(xmlString: string) {
    const parser = new DOMParser();
    const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
    const jsonResult = this.xmlService.xmlToJson(xmlDoc);
    console.log(jsonResult);
  }
}

方法二:规范使用xml2js库(适配TypeScript)

你之前用require的方式在Angular的TypeScript环境下易出问题,改用ES6导入+类型支持的方案:

  1. 安装依赖及类型定义
npm install xml2js --save
npm install @types/xml2js --save-dev
  1. 在组件中导入并实现转换
import { Component } from '@angular/core';
import { parseString } from 'xml2js';

@Component({
  selector: 'app-root',
  template: `<!-- 你的组件模板 -->`
})
export class AppComponent {
  convertXmlToJson(xmlString: string) {
    // 基础回调式用法
    parseString(xmlString, { explicitArray: false }, (err, result) => {
      if (err) {
        console.error('解析失败:', err);
      } else {
        console.log(result);
      }
    });

    // Promise封装(适配异步场景)
    const parsePromise = new Promise((resolve, reject) => {
      parseString(xmlString, { explicitArray: false }, (err, result) => {
        err ? reject(err) : resolve(result);
      });
    });

    parsePromise.then(json => console.log(json)).catch(err => console.error(err));
  }
}

注:{ explicitArray: false }是可选配置,用于避免单个节点被自动转为数组,可根据实际XML结构调整。

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:12:54