Доброго времени суток.
Решил научиться работать с XML, но возникла проблема, которую не могу решить.
Вот простой пример:
const xml2js = require('xml2js');
const xml = '<root>Hello xml2js!</root>';
(async () => {
const result = await xml2js.parseStringPromise(xml, { attrkey: 'ATTR' });
console.log(result.root); // Hello xml2js!
})();
Здесь все хорошо, но как только я собрался взять что-то пореалистичней, возникла проблема.
const fetch = require('node-fetch');
const xml2js = require('xml2js');
const util = require('util');
const url = 'https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml';
(async () => {
try {
const req = await fetch(url);
const exchangeRatesXML = await req.text();
const exchangeRatesParse = await xml2js.parseStringPromise(exchangeRatesXML, { attrkey: 'ATTR' });
const exchangeRates = util.inspect(exchangeRatesParse, false, null, true);
console.log(exchangeRates);
} catch (e) {
console.log(e);
}
})();
В консоли все ок
НО:
1)
typeof exchangeRates // string
2) при попытке обращаться к элементам объекта разумеется undefined, потому что тип строка
Но я не понимаю почему это произошло. Я пробовал
JSON.parse(exchangeRates), но возникает синтаксическая ошибка при парсинге.
Подскажите пожалуйста, в чем здесь проблема?
UPD
Если оставить так, то на месте вложенных объектов будет [Object]
const exchangeRatesParse = await xml2js.parseStringPromise(exchangeRatesXML, { attrkey: 'ATTR' });
console.log(exchangeRatesParse['gesmes:Envelope'].Cube);