private void LoadRss(XmlDocument xmlDoc) { foreach (XmlElement item in xmlDoc.GetElementsByTagName("item")) { var pubDate = GetPubDateForItem(item); // Check for an image element. var node = item.SelectSingleNode("image"); if (node != null && node.NodeType == XmlNodeType.Element) { node = node.SelectSingleNode("url"); if (node != null && node.NodeType == XmlNodeType.Element) { var url = node.InnerText; if (!string.IsNullOrWhiteSpace(url)) { Log.Write(LogLevel.Debug, "Found image in item image element '{0}'.", url); _images.Add(ImageRec.FromUrl(url, pubDate)); } } } // Scrape the HTML in the description. node = item.SelectSingleNode("description"); if (node != null && node.NodeType == XmlNodeType.Element) { SearchHtmlForImages(node.InnerText, pubDate); } } }
private void LoadAtom(XmlDocument xmlDoc) { foreach (XmlElement entry in xmlDoc.GetElementsByTagName("entry")) { var pubDate = GetPubDateForItem(entry); foreach (XmlNode node in entry.ChildNodes) { if (node.NodeType != XmlNodeType.Element) { continue; } if (node.Name == "content") { XmlElement content = (XmlElement)node; var type = content.GetAttribute("type"); if (string.IsNullOrEmpty(type) || type == "html" || type == "xhtml") { SearchHtmlForImages(content.InnerText, pubDate); } else if (type.StartsWith("image/")) { var src = content.GetAttribute("src"); if (!string.IsNullOrWhiteSpace(src)) { _images.Add(ImageRec.FromUrl(src, pubDate)); } } } } } }
private void SearchHtmlNodeForImages(HtmlNode parentNode, DateTime pubDate) { foreach (var node in (from n in parentNode.ChildNodes where n.NodeType == HtmlNodeType.Element select n)) { if (node.Name == "img") { var src = node.GetAttributeValue("src", ""); if (!string.IsNullOrWhiteSpace(src)) { Log.Write(LogLevel.Debug, "Found image in item HTML '{0}'.", src); _images.Add(ImageRec.FromUrl(src, pubDate)); } } else if (node.HasChildNodes) { SearchHtmlNodeForImages(node, pubDate); } } }