Я хотел преобразовать XML, который я получил из ответа веб-API, в JSON в Angular 2. Приложение разработано в Nativescript. Не удалось найти решение для этого.
Angular2: конвертировать XML в JSON
comment
Вы пробовали это: npmjs.com/package/nativescript-xml2js
- person galvan   schedule 16.03.2017
comment
Дубликат stackoverflow.com/questions /36368405/.
- person Gili Yaniv   schedule 16.03.2017
comment
Возможный дубликат Как анализировать xml в Angular 2
- person AJT82   schedule 16.03.2017
comment
Как сообщила команда Nativescript и в ходе экспериментов ни один из вышеперечисленных модулей, похоже, не работает с нативным скриптом angular 2. Существуют ли какие-либо другие альтернативы, которые можно использовать с нативным скриптом angular 2.
- person dreamdeveloper   schedule 21.03.2017
comment
Странно, значит, вы искали поддержку нативного скрипта-xml2js, и он сказал, что он не работает для нативного скрипта?
- person wuno   schedule 21.03.2017
comment
nativescript-xml2js не будет работать с nativescript. Они сказали, что автор плагина не является активным участником, и это не поддерживается в нативном скрипте. Только название сбивает с толку. Nativescript еще не предоставил подходящего решения для этого.
- person dreamdeveloper   schedule 22.03.2017
Ответы (3)
Я нашел удивительный пакет, чтобы сделать это очень просто.
Для меня я делаю это в приложении angular 2, но на стороне узла.
npm install xml2js --save
Это буквально так же просто, как передать xml следующим образом:
var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
console.dir(result);
});
В моем приложении у меня был файл xml, и я использовал его следующим образом:
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);
});
}
Надеюсь, это поможет.
person
wuno
schedule
16.03.2017
Почему-то я не могу увидеть журнал внутри функции parseAtring. Мыльная оболочка - это мой ответ от веб-API.
- person dreamdeveloper; 16.03.2017
То есть вы говорите, что пытаетесь утешить результат, а он не работает? не могли бы вы использовать console.log вне функции теста. Чтобы убедиться, что мы запускаем файл.
- person wuno; 16.03.2017
console.dir не работает, и я не знаю, как получить от него результат. var parseString = require('xml2js').parseString; var xml = ‹root›Hello xml2js!‹/root› parseString(xml, function (err, result) { console.dir(result); });
- person dreamdeveloper; 16.03.2017
попробуйте это, var parseString = require('xml2js').parseString; var xml = ‹root›Привет, xml2js!‹/root›; var jString = parseString(xml); console.log(jString);
- person wuno; 16.03.2017
Я получаю следующую ошибку, когда пытаюсь использовать модуль xml2js. 03-17 02:37:48.190: V/JS(7130): ошибка ::: Ошибка: com.tns.NativeScriptException: не удалось найти модуль: события относительно: 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(собственный метод)
- person dreamdeveloper; 17.03.2017
Я не знаю точно, будет ли это работать для нативного скрипта. Но вот модуль событий. Это может быть связано с вашим приложением npmjs.com/package/events.
- person wuno; 17.03.2017
Подождите, посмотрите, изменится ли это npmjs.com/package/nativescript-xml2js.
- person wuno; 17.03.2017
Также это может вам помочь runkit.com/npm/nativescript-xml2js
- person wuno; 17.03.2017
используя nativescript-xml2js. Я получаю следующее исключение. «Ошибка: com.tns.NativeScriptException: не удалось найти модуль: xml2js, относительно: app/tns_modules/», который я использую ниже, getJsonfromXml () {try { let parseString = require('xml2js').parseString; let xml = ‹root›Привет, xml2js!‹/root›; parseString(xml, function(err, result) { if (err) throw err; console.dir(result); }); } catch (e){ console.log(ошибка :: +e); } }
- person dreamdeveloper; 17.03.2017
Как сообщила команда Nativescript и в ходе экспериментов ни один из вышеперечисленных модулей, похоже, не работает с нативным скриптом angular 2. Существуют ли какие-либо другие альтернативы, которые можно использовать с нативным скриптом angular 2.
- person dreamdeveloper; 21.03.2017
Это если вы выполняете POST и получаете ответ XML с помощью Angular 2: используйте xml2js - https://www.npmjs.com/package/xml2js
- npm установить xml2js --save
импортировать в служебный файл как:
import * as xml2js from 'xml2js';
Код:
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); }); }
person
Malick
schedule
03.05.2017
person
schedule
Добавьте в свой код больше контекста, чтобы помочь будущим читателям лучше понять его назначение.
- person Grant Miller; 23.07.2018