Извлечение xml из веб-сервиса в Angular 4
Я просто пытаюсь получить данные XML из какого-то домена и прочитать их в моем приложении. Сейчас я просто хочу читать необработанные данные. Из моего исследования выяснилось, что лучше всего конвертировать xml в json и загружать их в приложение. Вот что я пытался конвертировать и распечатывать. Может кто-нибудь посоветовать, что я делаю не так?
getProduction() {
var headers = new Headers({ 'Content-Type': 'text/xml'})
headers.set('Accept', 'text/xml');
headers.set('Content-Type', 'text/xml');
//make the http request
return this.http.get(this.url, {headers: headers})
.map(res => JSON.parse(parseString(res.text(),'')))
//Print JSON data?
.subscribe(data =>{console.log(data);});
}
private handleErorr( error: Response){
console.log('something went wrong');
return Observable.throw(error.json().error || 'server error');
}
1 ответ
Решение
Есть 2 проблемы с вашим кодом:
parseString()
Метод не является синхронным, поэтому он не будет возвращать проанализированный объект, для этого необходимо использовать обратный вызов.Вы пытаетесь преобразовать результат
parseString()
в JSON черезJSON.parse()
, Это просто неправильно, так как результатом должен быть уже объект JS. Вам не нужноJSON.parse()
позвони вообще.
Попробуйте это так:
getProduction() {
var headers = new Headers({'Content-Type': 'text/xml'})
headers.set('Accept', 'text/xml');
headers.set('Content-Type', 'text/xml');
//make the http request
return this.http
.get(this.url, {headers})
.subscribe(res => {
parseString(res.text(), (err, result) => {
if (err) {
return console.log('invalid XML');
}
console.log(result);
})
}, err => this.handleError(err);
}
private handleErorr(error: Response) {
console.log('something went wrong');
return Observable.throw(error.json().error || 'server error');
}