3

我想將從Web API響應收到的XML轉換爲Angular 2中的JSON。該應用程序是在Nativescript中開發的。無法找到解決方案。Angular2:將XML轉換爲JSON

+0

你有沒有試過這招:https://www.npmjs.com/package/nativescript-xml2js – galvan

+0

重複http://stackoverflow.com/questions/ 36368405 /如何對解析的XML-在棱角-2。 –

+0

[如何在Angular 2中解析xml]可能的副本(http://stackoverflow.com/questions/36368405/how-to-parse-xml-in-angular-2) – Alex

回答

5

我發現了一個驚人的軟件包,使其非常簡單。

xml2js

對我來說,對我在角2應用程序,但是,從節點側做。

npm install xml2js --save 

這是字面上通過這樣的XML一樣簡單,

var parseString = require('xml2js').parseString; 
var xml = "<root>Hello xml2js!</root>" 
parseString(xml, function (err, result) { 
    console.dir(result); 
}); 

在我的應用我有一個XML文件,並使用它像這樣,

var fs = require('fs'); 
var parseString = require('xml2js').parseString; 

function requestCreditReport(callback) { 
    fs.readFile('./credit-api/response.xml', 'utf8', function (err,data) { 
     if (err) return callback(err); 
     parseString(data, callback); 
    }); 
} 

See this jsfiddle

我希望這有助於。

+0

不知何故,我無法看到parseAtring函數內的日誌。肥皂信封是我對web api的迴應。 – dreamdeveloper

+0

所以你說你試圖控制結果,它不工作?請問console.log是否在測試函數之外。確保我們正在運行該文件。 – wuno

+0

console.dir不工作,我不知道如何從中得到結果。 var parseString = require('xml2js')。parseString; var xml =「 Hello xml2js!」 parseString(xml,function(err,result){ console.dir(result); }); – dreamdeveloper

2

這是如果你正在做一個POST和使用角2取回XML響應:使用xml2js - https://www.npmjs.com/package/xml2js

  1. NPM安裝xml2js -g
  2. 導入服務文件: 進口*爲'xml2js'中的xml2js;

  3. 代碼:

    let formdata = new URLSearchParams(); 
    formdata.set('username','username'); 
    formdata.set('pw','pw'); 
    let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded' }); 
    
    let options = new RequestOptions({ headers: headers, method: RequestMethod.Post}); 
    
    postData() { 
    
        this.http.post(this._yourUrl, formdata.toString(), options) 
        //convert to JSON here 
        .map(res => { 
          xml2js.parseString(res.text(), function (err, result) { 
          console.dir(result); // Prints JSON object! 
         }); 
        }) 
        .subscribe(data => { 
          console.log(data);    
        }); 
    }