2017-02-15 3 views
0

У меня есть этот метод, где я получаю ответ XML с удаленным сервером, и мне нужно, чтобы преобразовать XML в JSON, так что Угловые 2 может работать с данными:Угловые: Преобразование XML в JSON

private extractData(res: Response) { 
    let xml = res["_body"] 
    console.log(xml); 
    var parser = require('xml2json'); 
    var json = parser.toJson(xml); 
    return json 
    } 

I Я пытаюсь использовать этот модуль узла: https://www.npmjs.com/package/xml2json

Теперь этот модуль узла написан в javascript (NOT TypeScript), поэтому я не уверен, могу ли я даже использовать его в приложении Angular 2.

Я получаю эту ошибку компиляции:

ERROR in ./~/isemail/lib/index.js Module not found: Error: Can't resolve 'dns' in '/Users/user/ebayTool/node_modules/isemail/lib' @ ./~/isemail/lib/index.js 5:12-26 @ ./~/joi/lib/string.js @ ./~/joi/lib/index.js @ ./~/xml2json/lib/xml2json.js @ ./~/xml2json/lib/index.js @ ./~/xml2json/index.js @ ./src/app/hero.service.ts @ ./src/app/app.component.ts @ ./src/app/app.module.ts @ ./src/main.ts @ multi webpack-dev-server/client? http://localhost:4200/ ./src/main.ts webpack: Failed to compile.

Так что мой вопрос заключается в том, чтобы преобразовать XML в JSON в угловых 2 и как я могу правильно импортировать xml2json модуль Node для использования в моем проекте?

ответ

2

Если вы используете angular-cli для загрузки вашего приложения - он уже поставляется с модулем узла для преобразования xml.

https://github.com/Leonidas-from-XIV/node-xml2js

Так что вам не нужно добавлять дополнительные модули для этого. Как это модуль классический CommonJS - вам нужно использовать require импортировать:

let parseString = require('xml2js').parseString; 

Так что ваш код может выглядеть так:

let parseString = require('xml2js').parseString; 
let xml = "<root>Hello xml2js!</root>" 

parseString(xml, function (err, result) { 
    console.dir(result); 
}); 

Вы получите следующий вывод:

enter image description here

В любом случае - если вы даже не используете angular-clior, хотите использовать свой предпочтительный модуль для разбора xml - используйте require для его загрузки.

+0

Спасибо! Поэтому я действительно использовал Angular CLI для загрузки моего приложения. – etayluz

+0

Я получаю ошибку ниже, когда пытаюсь использовать модуль xml2js. 03-17 02: 37: 48.190: V/JS (7130): error ::: Ошибка: 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 (собственный метод) – dreamdeveloper

+0

У меня возникают похожие проблемы с @dreamdeveloper - модуль 'xml2js' имеет зависимости от 'events' и' timers', которые встроены в модули NodeJS и недоступны для Angular на стороне клиента. – Chad

Смежные вопросы