Quería convertir el XML que recibí de la respuesta de la API web a JSON en Angular 2. La aplicación está desarrollada en Nativescript. No puedo encontrar una solución para esto.
Encontré un paquete increíble para hacer esto muy simple.
Para mí, lo estoy haciendo en una aplicación angular 2 pero en el lado del nodo.
npm install xml2js --saveLiteralmente es tan simple como pasar el xml así,
var parseString = require('xml2js').parseString; var xml = "<root>Hello xml2js!</root>" parseString(xml, function (err, result) { console.dir(result); });En mi aplicación tenía un archivo xml y lo usé así,
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); }); }Espero que esto ayude.
Esto es si está haciendo un POST y obteniendo una respuesta XML usando Angular 2: Use xml2js - https://www.npmjs.com/package/xml2js
importar en el archivo de servicio como:
import * as xml2js from 'xml2js';Código:
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; }