我正在使用这个项目: 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获取缩略图。我的意思是,那里没有项目缩略图。 感谢。
答案 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