从 Angular 中的 Web 服务获取 xml 4
fetching xml from web service in 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');
}
您的代码有 2 个问题:
parseString()
方法不是同步的,所以它不会return解析对象,你需要为此使用回调。
您正在尝试通过 JSON.parse()
将 parseString()
的结果转换为 JSON。那是错误的,因为结果应该已经是 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');
}
我只是想从某个域中检索 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');
}
您的代码有 2 个问题:
parseString()
方法不是同步的,所以它不会return解析对象,你需要为此使用回调。您正在尝试通过
JSON.parse()
将parseString()
的结果转换为 JSON。那是错误的,因为结果应该已经是 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');
}