Взять данные из XML файла и поместить их в переменную javascript
Всем привет. Поставил я себе задачу взять курс валюты с сайта Центробанка и вывести его у себя на сайте. Имеется XML файл (http://www.cbr.ru/scripts/XML_daily.asp?date_req=). Вот только я про XML вообще ничего не знаю. Как мне с помощью JS получить значение тега(я же так понимаю там информация в теги заключена), и присвоить это значение переменной. И самое основное с чем у меня проблема, как мне содержимое этого файлы переместить на свой сайт. Ну то есть подключить этот XML или что с ним делать? Если подключить нужно, то как это сделать?
Ответы (2 шт):
Раз с 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);
});
Имеется 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)