private void ParseRss20Items(PodcastRss20Feed rssFeed, string xml) { var document = XDocument.Parse(xml); var feedItemNodes = document.Root.Element("channel").Elements("item"); foreach (var item in feedItemNodes) { rssFeed.Items.Add(ParseRss20SingleItem(item)); } }
protected virtual void ParseRss20Header(PodcastRss20Feed rssFeed, string xml) { var document = XDocument.Parse(xml); var channel = document.Root.Element("channel"); rssFeed.Title = channel.Element("title").Value; rssFeed.Description = channel.Element("description").Value; var linkNode = channel.Element("link"); rssFeed.Link = linkNode == null ? string.Empty : linkNode.Value; var dateTimeNode = (from dateSelector in channel.Elements("lastBuildDate") select dateSelector).FirstOrDefault(); if (dateTimeNode == null) { rssFeed.LastUpdated = DateTime.UtcNow; } else { DateTime timeOut; DateTime.TryParse(dateTimeNode.Value, out timeOut); rssFeed.LastUpdated = timeOut.ToUniversalTime(); } var generatorNode = channel.Element("generator"); rssFeed.Generator = generatorNode == null ? string.Empty : generatorNode.Value; var languageNode = channel.Element("language"); rssFeed.Language = languageNode == null ? string.Empty : languageNode.Value; var categoryNode = channel.Element("category"); rssFeed.Category = categoryNode == null ? string.Empty : categoryNode.Value; var copyrightNode = channel.Element("copyright"); rssFeed.Copyright = copyrightNode == null ? string.Empty : copyrightNode.Value; var managingEditorNode = channel.Element("managingEditor"); rssFeed.ManagingEditor = managingEditorNode == null ? string.Empty : managingEditorNode.Value; var webMasterNode = channel.Element("webMaster"); rssFeed.WebMaster = webMasterNode == null ? string.Empty : webMasterNode.Value; var imageNode = channel.Element("image"); if (imageNode != null) { var urlNode = imageNode.Element("url"); var titleNode = imageNode.Element("title"); var link2Node = imageNode.Element("link"); var widthNode = imageNode.Element("width"); var heightNode = imageNode.Element("height"); rssFeed.Image = new PodcastRss20FeedImage(); rssFeed.Image.Url = urlNode == null ? string.Empty : urlNode.Value; rssFeed.Image.Title = titleNode == null ? string.Empty : titleNode.Value; rssFeed.Image.Link = link2Node == null ? string.Empty : link2Node.Value; rssFeed.Image.Width = widthNode == null ? string.Empty : widthNode.Value; rssFeed.Image.Height = heightNode == null ? string.Empty : heightNode.Value; } }