Je voulais convertir le code XML reçu de la réponse de l'API Web en JSON dans Angular 2. L'application est développée en Nativescript. Impossible de trouver une solution pour cela.
J'ai trouvé un paquet incroyable pour rendre cela très simple.
Pour moi, je le fais dans une application angulaire 2 mais du côté du noeud.
npm install xml2js --save
C'est littéralement aussi simple que de passer le xml comme ceci,
var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
console.dir(result);
});
Dans mon application, j'avais un fichier XML et je l'ai utilisé comme ça,
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);
});
}
J'espère que ça aide.
Ceci est le cas si vous effectuez un POST et récupérez la réponse XML en utilisant Angular 2: Utilisez xml2js - https://www.npmjs.com/package/xml2js
importer dans le fichier de service en tant que: importer * en tant que xml2js à partir de 'xml2js';
Code:
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);
});
}
function parseXml(xmlStr) {
var result;
var parser = require('xml2js');
parser.Parser().parseString(xmlStr, (e, r) => {result = r});
return result;
}