I have an array of RSS URLs that i would like to get data from and save that data in one array. here is my code:
// rss urls array
var URLS = [
"https://www.wired.com/feed/rss",
"http://feeds.bbci.co.uk/news/rss.xml",
"http://www.nasa.gov/rss/dyn/breaking_news.rss"
];
I have a data variable in my state where i would like the data to get stored
constructor() {
super()
this.state = {
data: []
}
}
I use the fetchData() function to attempt to fetch the Data
fetchData() {
var urlArray = [];
for (var i = 0; i < URLS.length; i++) {
urlArray.push(URLS[i]);
}
fetch(urlArray)
.then((response) => response.text())
.then((responseData) => {
this.setState({
data: this.extractData(responseData)
});
}).done();
}
componentDidMount() {
this.fetchData();
}
I use the extractData function to get data from the rss feed like this
extractData(text) {
var doc = new DOMParser().parseFromString(text, 'text/xml');
var items_array = [];
var items = doc.getElementsByTagName('item');
for (var i = 0; i < items.length; i++) {
items_array.push({
title: items[i].getElementsByTagName('title')[0].lastChild.data,
description: items[i].getElementsByTagName('description')[0].lastChild.data,
//thumbnail: items[i].getElementsByTagName('enclosure')[0].getAttribute('url'),
//link: items[i].getElementsByTagName('link')[0].textContent,
//date: items[i].getElementsByTagName('pubDate')[0].textContent,
})
}
return items_array;
}
But when i run i am getting an error saying "cannot load an empty URL"
URLS.map(url=> fetch(url).then(res=>res.text()).then(extractData).then(items=> this.setState({data:this.state.data.push(...items)})))