如何从RSS提要项中获取所有可能的图像URL?

我尝试使用此示例从http://www.nydailynews.com/cmlink/NYDN.Article.rss获取图像url

但没有成功

你可以帮我找到所有正确的方法来从SyndicationItem类的RSS feed项中获取所有可能的图像URL吗?

这里有草案解决方案,但我想应该是更通用的解决方案。

谢谢!

  List rssItems = new List(); Stream stream = e.Result; XmlReader response = XmlReader.Create(stream); SyndicationFeed feeds = SyndicationFeed.Load(response); foreach (SyndicationItem f in feeds.Items) { RssFeedItem rssItem = new RssFeedItem(); rssItem.Description = f.Summary.Text; foreach (SyndicationLink enclosure in f.Links.Where(x => x.RelationshipType == "enclosure")) { Uri url = enclosure.Uri; long length = enclosure.Length; string mediaType = enclosure.MediaType; rssItem.ImageLinks.Add(url.AbsolutePath); } } 

我找到了解决方案。

 foreach (SyndicationElementExtension extension in f.ElementExtensions) { XElement element = extension.GetObject(); if (element.HasAttributes) { foreach (var attribute in element.Attributes()) { string value = attribute.Value.ToLower(); if (value.StartsWith("http://") && (value.EndsWith(".jpg") || value.EndsWith(".png") || value.EndsWith(".gif") )) { rssItem.ImageLinks.Add(value); // Add here the image link to some array } } } } 
 XDocument xDoc = XDocument.Load("http://www.nydailynews.com/cmlink/NYDN.Article.rss"); XNamespace media = XNamespace.Get("http://search.yahoo.com/mrss/"); var images = xDoc.Descendants(media+"content") .Where(m=>m.Attribute("type").Value=="image/jpeg") .Select(m=>m.Attribute("url").Value) .ToArray(); 

– 编辑 –

 var images = feeds.Items .SelectMany(i => i.ElementExtensions .Select(e => e.GetObject().Attribute("url").Value) ) .ToArray(); 

从字符串中获取图像列表

 var text = "your text with image links"; Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?.(?:jpg|bmp|gif|png)", RegexOptions.IgnoreCase); MatchCollection mactches = regx.Matches(text);