Как преобразовать xml — данные в json в Angular?

#json #angular #xml #xml-parsing

Вопрос:

Когда я пытаюсь отобразить свои данные в браузере, я получаю следующую ошибку:

ОШИБКА Ошибка: Не найдено (в обещании): Ошибка типа: Не удается прочитать свойства неопределенного (чтение «Синтаксический анализатор») Ошибка типа: Не удается прочитать свойства неопределенного (чтение «Синтаксический анализатор»)

Это мой файл .ts

 import { Component, OnInit } from '@angular/core';

import { xml2js}  from 'xml2js';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html'
})
export class AppComponent {
  public xmlItems: any;
constructor(private http: HttpClient) {
  this.loadXML();
}
loadXML() {
  this.http.get('/assets/data.xml',
    {
      headers: new HttpHeaders()
        .set('Content-Type', 'text/xml')
        .append('Access-Control-Allow-Methods', 'GET')
        .append('Access-Control-Allow-Origin', '*')
        .append('Access-Control-Allow-Headers', "Access-Control-Allow-Headers, Access-Control-Allow-Origin, Access-Control-Request-Method"),
      responseType: 'text'
    })
    .subscribe((data) => {
      this.parseXML(data)
        .then((data) => {
          this.xmlItems = data;
          console.log(this.xmlItems);
        });
    });
}
parseXML(data) {
  return new Promise(resolve => {
    var k: string | number,
      arr = [],
      parser = new xml2js.Parser(
        {
          trim: true,
          explicitArray: true
        });
    parser.parseString(data, function (err, result) {
      let obj = result.root;
      for (k in obj.parent) {
        let item = obj.parent[k];
        arr.push({
          child: item.child[0]
        });
      }
      resolve(arr);
    });
  });
} }