Взять данные из XML файла и поместить их в переменную javascript

Всем привет. Поставил я себе задачу взять курс валюты с сайта Центробанка и вывести его у себя на сайте. Имеется XML файл (http://www.cbr.ru/scripts/XML_daily.asp?date_req=). Вот только я про XML вообще ничего не знаю. Как мне с помощью JS получить значение тега(я же так понимаю там информация в теги заключена), и присвоить это значение переменной. И самое основное с чем у меня проблема, как мне содержимое этого файлы переместить на свой сайт. Ну то есть подключить этот XML или что с ним делать? Если подключить нужно, то как это сделать?


Ответы (2 шт):

Автор решения: Eugene Kuznetsov

Раз с xml не очень хочется работать вы можете преобразовать его в обычный JS объект и работать с ним. Могу посоветовать xml2js (ссылка npm).

Делаете GET запрос получаете, ответ, полученный ответ передаете в метод parseStringPromise() у экземпляра xmlDate.Parser(), возвращает промис результатом выполнения, которого будет объект с которым, я думаю, вы уже умеете работать.

import axios from 'axios';
import xmlDate from 'xml2js';

const parser = new xmlDate.Parser();
axios
  .get(
    `http://www.cbr.ru/scripts/XML_daily.asp?date_req=`
  )
  .then((response) => {
    parser.parseStringPromise(response.data).then((result) => {
      const yourVar = result.ITEMS[0].ITEM[0]; // работаете как с обычным js объектом, (здесь какие-то рандомные свойстав написал)
    })

  .catch((err) => {
    console.log(err);
  });
→ Ссылка
Автор решения: ksa

Имеется XML файл (http://www.cbr.ru/scripts/XML_daily.asp?date_req=). Вот только я про XML вообще ничего не знаю. Как мне с помощью JS получить значение тега(я же так понимаю там информация в теги заключена), и присвоить это значение переменной. И самое основное с чем у меня проблема, как мне содержимое этого файлы переместить на свой сайт. Ну то есть подключить этот XML или что с ним делать?

Для работы с xml на клиенте можно использовать объект DOMParser, примерно таким образом...

const fn = res => {
  const parser = new DOMParser();
  const xmlDoc = parser.parseFromString(res, 'text/xml')
  xmlDoc.querySelectorAll('Valute').forEach(o => {
    const name = o.querySelector('Name').textContent
    const value = +o.querySelector('Value').textContent
    console.log(name, value)
  })
}
fetch('url_по_которому_получаешь_xml')
  .then(r => r.text())
  .then(fn)
  .catch(console.log)
→ Ссылка