Я настраиваю функцию импорта XML. В этом случае мы должны загрузить XML-файл из любого места, например, с рабочего стола, преобразовать XML-данные в JSON (что делается с помощью xml2json
). Но проблема возникает во время загрузки файла. Код приведен ниже
LutCrud.html
<div div fxLayout="row" fxLayoutAlign="end" mat-dialog-content *ngIf="isUpload">
<input mat-raised-button matTooltip="XML Import" class="LutButtons" type='file' accept='text/xml' (change)='openFile($event)'>
</div>
LutCrud.ts
import { Component, Input } from '@angular/core';
import { HttpHeaders, HttpClient } from '@angular/common/http';
export class HelloComponent {
@Input() name: string;
fileToUpload: any;
http: HttpClient;
xmlItems: any;
// ----------------------------------------------------
openFile(event) {
this.fileToUpload = event.target.files[0];
this.postFile(this.fileToUpload).subscribe(data => {
// do something, if upload success
console.log(data);
}, error => {
console.log(error);
});
}
postFile(fileToUpload: File): any {
console.log(fileToUpload.name);
this.http.get(+'./' + fileToUpload.name
, { 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((data1) => {
this.xmlItems = data1;
});
});
}
parseXML(data) {
// Here
let parseString = require('xml2js').parseString;
let xml = '<root>Hello xml2js!</root>';
parseString(xml, function (err, result){
console.dir(result);
});}
}
Соответствующая ошибкапоказано на рисунке ниже.
Я думаю, в строке this.http.get(+'./' + fileToUpload.name
есть ошибка. Если есть какая-либо ошибка или какой-либо другой способ, пожалуйста, помогите мне.
MRC приведен ниже по ссылке: https://stackblitz.com/edit/angular-m8e88a