Я предполагаю, что это что-то простое. Однако я пытаюсь обработать новостную ленту RSS, и в заголовке и описании есть некоторые экранированные символы HTML, в частности & apos ;. У меня сложилось впечатление, что decodeURI (...) справится с этим, но я мог использовать не ту функцию. Любая помощь будет оценена.
getNews(stocks: string, daysBack: number) {
this.newsItems = [];
const securityArray = stocks.split(',');
this.recordsProcessed = 0;
this.recordCount = securityArray.length;
this.securityService.progressStart.next(0);
this.securityService.progressFinish.next(this.recordCount);
this.showRecs = false;
for (let i = 0; i < securityArray.length; i++) {
const stk = securityArray[i];
this.securityService.getNews(securityArray[i]).takeUntil(this.ngUnsubscribe).subscribe(n => {
try {
for (let x = 0; x < n.rss.channel.item.length; x++) {
const iDate = new Date(new Date().setDate(new Date().getDate() - daysBack));
iDate.setHours(0, 0, 0, 0);
const pDate = new Date(n.rss.channel.item[x].pubDate);
if (pDate >= iDate) {
const newsItem = new NewsItem(
stk,
decodeURI(n.rss.channel.item[x].description),
n.rss.channel.item[x].guid,
n.rss.channel.item[x].link,
decodeURI(n.rss.channel.item[x].title),
pDate
);
this.newsItems.push(newsItem);
}
}
this.recordsProcessed++;
this.securityService.progressStart.next(this.recordsProcessed);
if (this.recordCount === this.recordsProcessed) {
this.showRecs = true;
}
} catch (e) {
console.log(e);
this.recordsProcessed++;
this.securityService.progressStart.next(this.recordsProcessed);
if (this.recordCount === this.recordsProcessed) {
this.showRecs = true;
}
}
}, error => {
console.log('Error', error);
this.recordsProcessed++;
this.securityService.progressStart.next(this.recordsProcessed);
});
}
}