IwanQ
@IwanQ
Плохие времена часто дают прекрасные возможности

Как работать с XML?

Доброго времени суток.

Решил научиться работать с 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);
  }
})();


В консоли все ок
602a73782a04e388181337.png

НО:
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);

602a77e71d791149241686.png
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы