private static async Task ProcessXml(XmlReader r, Comic c) { // TODO: MSDN shows ReadToFollowingAsync but it's not found..? r.ReadToFollowing("item"); while (await r.ReadAsync()) { switch (r.LocalName) { case "title": c.Title = r.ReadInnerXml(); break; case "pubDate": DateTime dt; if (DateTime.TryParse(r.ReadInnerXml(), out dt)) { c.Published = dt; } break; case "origLink": c.Link = new Uri(r.ReadInnerXml()); break; case "guid": int guid; var rgx = new Regex(@"(?<=p=)[0-9]+"); var match = rgx.Match(r.ReadInnerXml()); if (int.TryParse(match.Value, out guid)) { c.Id = guid; } break; // Only need the first (most recent) item case "item": return; } } }