(1) Създаваме нов проект в Microsoft Visual Studio 2013, със следния избор за проекта: Visual C# > Windows Store > Grid App > OK.

(2) Отваряме: Solution Explorer > DataModel > SampleDataSource.cs

(3) Добавяме в него следните пространства с имена:

using System.IO;
using Windows.Web.Syndication;
using System.Text.RegularExpressions;

(4) Заместваме кода на класа:
private async Task GetSampleDataAsync() {
if (this._groups.Count != 0) return; string feedUrl = "http://www.minchev.eu/rss/"; var feedClient = new SyndicationClient(); var feed = await feedClient.RetrieveFeedAsync(new Uri(feedUrl)); var feedGroup = new SampleDataGroup(uniqueId: feedUrl, title: feed.Title != null ? feed.Title.Text : null, subtitle: feed.Subtitle != null ? feed.Subtitle.Text : null, imagePath: feed.ImageUri != null ? feed.ImageUri.ToString() : null, description: null); foreach (var i in feed.Items) { string imgPath = GetImage(i); var dataItem = new SampleDataItem(uniqueId: i.Id, title: i.Title.Text, subtitle: null, imagePath: imgPath, description: null, content: i.Summary.Text); feedGroup.Items.Add(dataItem); } this._groups.Add(feedGroup); }

(5) Веднага след него добавяме следният метод:
private static string GetImage(SyndicationItem item) {
var regex = new Regex( "[src href]\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))"); var matches = regex.Matches(item.Summary.Text); return matches.Cast<Match>().Where(m => { Uri url; if (Uri.TryCreate(m.Groups[1].Value, UriKind.Absolute, out url)) { string ext = Path.GetExtension(url.AbsolutePath).ToLower(); if (ext == ".png" || ext == ".jpg" || ext == ".jpeg") return true; } return false; }).Select(m => m.Groups[1].Value).FirstOrDefault(); }

Автор: Димитър Минчев

Доктор по информатика и компютърни науки