2017-03-23 87 views
0

我一直在這個問題上過去三天。我想將通過HTTP檢索到的XML轉換爲JSON,以便我可以在離子2中顯示它。以下是我在提供程序中的代碼..任何幫助都將非常感謝。謝謝!如何解析xml到Json離子2

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 

import 'rxjs/add/operator/map'; 

import * as xml2js from "xml2js"; 


@Injectable() 
export class News { 

    constructor(public http: Http) { } 

    public getData() { 

     this 
      .http 
      .get('https://www.ug.edu.gh/news.xml') 
      .map(res => { 

       var cleanedString = res.toString().replace("\ufeff", ""); 

       xml2js 
       .parseString(cleanedString, (error, result) => { 

        console.log(result); 
        return result; 

       }); 

      }) 
      .subscribe((data) => { 
       console.log(data) 
      }, (err) => { 
       console.log(err) 
      }); 

    } 
} 

回答

0

對於離子2 解析XML爲JSON現在,您可以使用命令

typings install xml2json --save 

安裝xml2json的分型如果產生這樣的

'typings' is not recognized as an internal or external command, 
operable program or batch file. 

然後第一次使用錯誤此命令安裝打字

npm install typings -g 

然後運行先前的命令

typings install xml2json --save 

然後,它會正常工作。 希望它對你有用

0

你快到了。當return數據來自parseString方法時,出現問題。你只應該使用一個臨時變量,結果從parseString方法分配並返回一個臨時變量,像這樣:

// ... 
.map(res => { 

    let cleanedString = res.toString().replace("\ufeff", ""); 
    let jsonData; 

    xml2js 
    .parseString(cleanedString, (error, result) => { 

     if(error) { 
      console.error(error); 
      jsonData = error; 
     } else { 
      jsonData = result; 
     } 

    }); 

    return jsonData; 

}).subscribe((data) => { 
// ... 

更深入的描述和另一種方法是給here.