从RSS提要UWP C#Windows 10获取缩略图

时间:2016-06-22 11:52:27

标签: c# windows rss uwp

我正在使用这个项目: https://github.com/Microsoft/Windows-appsample-rssreader

我想从RSS源中获取thumnails。现在,问题是我得到错误。我会解释他们。首先来看看我做了什么。 : 我有这门课:

  public class ArticleViewModel : BindableBase
{
    public string thumbnail { get; set; }
    public string Title { get; set; }
    public string Summary { get; set; }
    public string Author { get; set; }
    public Uri Link { get; set; }
    public DateTimeOffset PublishedDate { get; set; }
    public string PublishedDateFormatted => PublishedDate.ToString("MMM dd, yyyy    h:mm tt").ToUpper();
    public override bool Equals(object obj) => 
        obj is ArticleViewModel ? (obj as ArticleViewModel).GetHashCode() == GetHashCode() : false;
    public override int GetHashCode() => Link.GetHashCode();
    private bool? _isStarred = false;
    public bool? IsStarred { get { return _isStarred; } set { SetProperty(ref _isStarred, value); } }
}

例如,我们采用http://coffeeetech.xyz/feed的RSS Feed。

现在这里:

var feed =等待新的SyndicationClient()。RetrieveFeedAsync(feedViewModel.Link);

                feedViewModel.Name = String.IsNullOrEmpty(feedViewModel.Name) ? feed.Title.Text : feedViewModel.Name;
                feedViewModel.Description = feed.Subtitle?.Text ?? String.Empty;

                feed.Items.Select(item => new ArticleViewModel
                {


                    thumbnail = item.thumbnail,
                    //    description = WebUtility.HtmlDecode(description);
                    Title = item.Title.Text,
                    Summary = item.Summary == null ? string.Empty :
                        item.Summary.Text.RegexRemove("\\&.{0,4}\\;").RegexRemove("<.*?>"),
                    Author = item.Authors.Select(a => a.NodeValue).FirstOrDefault(),
                    Link = item.ItemUri ?? item.Links.Select(l => l.Uri).FirstOrDefault(),
                    PublishedDate = item.PublishedDate
                })
                .ToList().ForEach(article =>
                {
                    var favorites = AppShell.Current.ViewModel.FavoritesFeed;
                    var existingCopy = favorites.Articles.FirstOrDefault(a => a.Equals(article));
                    article = existingCopy ?? article;
                    if (!feedViewModel.Articles.Contains(article)) feedViewModel.Articles.Add(article);
                });
                return true;

现在,问题是,在thubmnail = item.thumbnail行中,我得到'当前上下文中不存在缩略图'的错误

所以问题是如何通过SyndicationFeed获取缩略图。我的意思是,那里没有项目缩略图。 感谢。

1 个答案:

答案 0 :(得分:0)

SyndicationItem class表示Feed中的项目。此类将信息封装在 RSS 2.0 中的 / rss / channel / item 元素或 Atom 1.0中的 atom:entry 元素中/ em>的

对于RSS 2.0中的<item> element,没有与缩略图相关的子元素。所以SyndicationItem没有&#34;缩略图&#34;属性。甚至我们添加一个&#34;缩略图&#34;在这堂课上,它也没有得到帮助。有关SyndicationItem属性与RSS元素之间的映射,请参阅SyndicationItem class备注部分下的表格。

因为你想获得主缩略图。我想你想获得<image>的{​​{1}}子元素。如果是这样,您可以尝试使用<channel>属性。此属性表示 RSS 2.0 中的 image / uri 元素。您可以添加&#34;缩略图&#34; SyndicationFeed.ImageUri中的属性,然后将其设置为FeedViewModel方法,如下所示。

RefreshAsync