web-dev-qa-db-fra.com

Angular2: Convertir XML en JSON

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.

8
dreamdeveloper

J'ai trouvé un paquet incroyable pour rendre cela très simple.

xml2js

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);
    });
}

Voir ce jsfiddle

J'espère que ça aide.

7
wuno

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

  1. npm installe xml2js -g
  2. importer dans le fichier de service en tant que: importer * en tant que xml2js à partir de 'xml2js';

  3. 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);              
         });
    }
    
5
Malick
function parseXml(xmlStr) {
    var result;
    var parser = require('xml2js');
    parser.Parser().parseString(xmlStr, (e, r) => {result = r});
    return result;
}
0
Pankaj kumar