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.
-
Did you tried this one: npmjs.com/package/nativescript-xml2jsgalvan– galvan2017-03-16 15:30:09 +00:00Commented Mar 16, 2017 at 15:30
-
Duplicate of stackoverflow.com/questions/36368405/….Gili Yaniv– Gili Yaniv2017-03-16 15:52:40 +00:00Commented Mar 16, 2017 at 15:52
-
Possible duplicate of How to parse xml in Angular 2AVJT82– AVJT822017-03-16 19:34:55 +00:00Commented Mar 16, 2017 at 19:34
-
As informed by Nativescript team and as experimented, none of the above said modules seems to be working with nativescript angular 2. So is there any other alternatives which can be used with nativescript angular 2.dreamdeveloper– dreamdeveloper2017-03-21 11:30:46 +00:00Commented Mar 21, 2017 at 11:30
-
Weird, so you looked up support for the nativescript-xml2js and it said it it does not work for nativescript?wuno– wuno2017-03-21 17:34:18 +00:00Commented Mar 21, 2017 at 17:34
|
Show 1 more comment
3 Answers
I found an amazing package to make this very simple.
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);
});
}
I hope this helps.
10 Comments
dreamdeveloper
Somehow i am not able see the log inside the parseAtring function. Soap envelop is my response from web api.
wuno
So you are saying that you are trying to console result and it is not working? would you please console.log outside of the function a test. To make sure we are running the file.
dreamdeveloper
The console.dir is not working and i am not sure how to get the result out of it. var parseString = require('xml2js').parseString; var xml = "<root>Hello xml2js!</root>" parseString(xml, function (err, result) { console.dir(result); });
wuno
try this, var parseString = require('xml2js').parseString; var xml = "<root>Hello xml2js!</root>"; var jString = parseString(xml); console.log(jString);
dreamdeveloper
I am getting the below error when i try to use the xml2js module. 03-17 02:37:48.190: V/JS(7130): error ::: Error: com.tns.NativeScriptException: Failed to find module: "events", relative to: app/tns_modules/ 03-17 02:37:48.190: V/JS(7130): com.tns.Module.resolvePathHelper(Module.java:159) 03-17 02:37:48.190: V/JS(7130): com.tns.Module.resolvePath(Module.java:60) 03-17 02:37:48.190: V/JS(7130): com.tns.Runtime.callJSMethodNative(Native Method)
|
This is if you are doing a POST and getting back XML response using Angular 2: Use xml2js - https://www.npmjs.com/package/xml2js
- npm install xml2js --save
import in service file as:
import * as xml2js from '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); }); }
Comments
function parseXml(xmlStr) {
var result;
var parser = require('xml2js');
parser.Parser().parseString(xmlStr, (e, r) => {result = r});
return result;
}
1 Comment
Grant Miller
Add some more context to your code to help future readers better understand its purpose.