Angular2: Convert XML to JSON

前端 未结 3 1731
予麋鹿
予麋鹿 2020-12-16 04:13

I wanted to convert the XML I received from Web API response to JSON in Angular 2. The application is developed in Nativescript. Not able to find a solution for this.

相关标签:
3条回答
  • 2020-12-16 04:44
    function parseXml(xmlStr) {
        var result;
        var parser = require('xml2js');
        parser.Parser().parseString(xmlStr, (e, r) => {result = r});
        return result;
    }
    
    0 讨论(0)
  • 2020-12-16 04:50

    I found an amazing package to make this very simple.

    xml2js

    For me on I am doing it in an angular 2 application but on the node side.

    npm install xml2js --save
    

    It is literally as simple as passing the xml like this,

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

    In my app I had an xml file and used it like this,

    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

    I hope this helps.

    0 讨论(0)
  • 2020-12-16 04:54

    This is if you are doing a POST and getting back XML response using Angular 2: Use xml2js - https://www.npmjs.com/package/xml2js

    1. npm install xml2js --save
    2. import in service file as:

      import * as xml2js from '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);              
           });
      }
      
    0 讨论(0)
提交回复
热议问题