угловое декодирование, не исчезающее & apos; - PullRequest
0 голосов
/ 01 мая 2018

Я предполагаю, что это что-то простое. Однако я пытаюсь обработать новостную ленту 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);
  });
}
}

1 Ответ

0 голосов
/ 01 мая 2018

Вы действительно используете неправильную функцию для декодирования сущностей HTML - decodeURI() обрабатывает экранирование знака процента, а не сущности HTML.

Я бы использовал для этого функцию Lodash _.unescape().

...