void parseRSSFeed(Object sender, OpenReadCompletedEventArgs e) { XElement resultXml; if (e.Error != null) { NotifyPropertyChanged("RSS_FEED_Errror"); return; } else { IList<RSSItem> tmp = new List<RSSItem>(); XNamespace web = "http://www.w3.org/2005/Atom"; try { resultXml = XElement.Load(e.Result); DateTime t; IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; DateTime lastUpdated = DateTime.MinValue; if(settings.Contains(RSS_UPDATED)) { lastUpdated = (DateTime) settings[RSS_UPDATED]; } foreach (XElement result in resultXml.Descendants(web + "entry")) { RSSItem item = new RSSItem(); item.Title = result.Element(web + "title").Value.Trim(); item.Description = result.Element(web + "content").Value.Replace("<br><br>", ". ").Replace("<br>", " ").Trim(); foreach (XAttribute a in result.Element(web + "link").Attributes()) { if (a.Name.ToString().ToLower() == "href") { item.URL = a.Value.Trim(); } } item.ID = result.Element(web + "id").Value.Trim(); item.Read = false; item.Later = false; item.DateAddedToList = DateTime.Now; if(DateTime.TryParse(result.Element(web + "updated").Value.Trim(), out t)) { item.Updated = t; } if (item.Updated.CompareTo(lastUpdated) > 0) { tmp.Add(item); } } if (!settings.Contains(RSS_UPDATED)) { settings.Add(RSS_UPDATED, DateTime.Now); } else { settings[RSS_UPDATED] = DateTime.Now; } settings.Save(); foreach (RSSItem ri in tmp.OrderByDescending(x => x.Updated)) { this.RSSItems.Add(ri); } tmp.Clear(); } catch (System.Xml.XmlException ex) { } NotifyPropertyChanged("RSSItemsRetrived"); } }
public RSSItem addItem(string title, string description, string url, string id, DateTime date, Boolean read, Boolean later, Boolean starred) { RSSItem item = new RSSItem(); item.Title = title; item.Description = description; item.URL = url; item.ID = id; item.Read = read; item.Later = later; item.Starred = starred; item.Updated = date; item.DateAddedToList = date; this.RSSItems.Add(item); NotifyPropertyChanged("RSSItemsAdded"); return item; }