使用TypeScript在Ionic 3中解析XML的问题

时间:2018-10-12 12:23:50

标签: angular typescript ionic-framework

我的代码总是打印错误日志,我如何找到异常,请告诉我正确的方法 这是我的代码

this.http.get('http://www.gazetaexpress.com/rss/sport/?xml=1').subscribe(data => {
    this.xmlItems = data;
    console.log("data:"+data);
    xml2js.parseString(this.xmlItems, function (err, result) {
        console.log(result);
    });
}, error => {
    console.log(error);
});

1 个答案:

答案 0 :(得分:2)

我认为您遇到的问题不是这里解析XML,而是您如何从离子/角度应用程序中访问URL。

我简化了此代码示例:

this.http.get('http://www.gazetaexpress.com/rss/sport/?xml=1').subscribe(data => {
        console.log(data);
      }, error => {
        console.log(error);
    });

现在将其作为方法添加到此stackblitz中的ionViewDidLoad中: https://stackblitz.com/edit/ionic-4qbega

基于此上下文得到的错误是这个:

HttpErrorResponse {headers: {…}, status: 0, statusText: "Unknown Error", url: null…}
error: ProgressEvent
headers: HttpHeaders
message: "Http failure response for (unknown url): 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: null
__proto__: HttpErrorResponse

因此,要解决数据摄入问题,您需要执行以下操作:

  • 使用https URL
  • 还使用responseType:'text'

代码:

this.http.get('https://www.gazetaexpress.com/rss/sport/?xml=1', {responseType: 'text'}).subscribe(data => {
        console.log(data);
      }, error => {
        console.log(error);
    });

现在要使用您的代码,应该是这样的:

this.http.get('https://www.gazetaexpress.com/rss/sport/?xml=1', { responseType: 'text'}).subscribe(data => {
    this.xmlItems = data;
    console.log("data:"+data);
    xml2js.parseString(this.xmlItems, function (err, result) {
        console.log(result);
    });
}, error => {
    console.log(error);
});

PS:如果您还有其他问题,也可以在这里查看这篇优秀文章:https://www.ionicrun.com/transform-xml-to-json-in-ionic-2-with-angular-4-3/