2011-10-29 45 views
0

我有一个问题。从windows手机上的RSS源提取图像链接

如何从rss-feed中提取网址?

,我需要提取的字符串是这样的:

><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="screen2" src="http://hereisthelink/screen2.png" alt="screen2" width="261" height="434" border="0" /> 

这是我的自我hostet的WordPress,博客的RSS源,在<content:encoded>区间内。

我想获取一个条目的第一个图像,以将它与标题(此作品)放在我的ListBox中。

但我尝试了很多事情来实现这一点,但没有任何工作。

我正在使用Silverlight 3的Syndication.dll来提取供稿项目。

目前,我真的站在墙前来解决这个问题。

我愿意接受任何建议。

+0

如果你可以将你的rss feed转换为客户端的一个字符串,那么你只需要解析它就可以得到你的图像。 – BigL

+0

也许这个链接可以帮助您: http://stackoverflow.com/questions/319591/reading-non-standard-elements-in-a-syndicationitem-with-syndicationfeed – BigL

+0

我检查了您的链接。这不是我正在寻找的。我想收集一个随机生成的URL到图像,将图像绑定到这个URL。目前我正在玩RegEx来解决这个问题。任何想法呢? Thx – MSicc

回答

0

您可以使用HTML敏捷包http://htmlagilitypack.codeplex.com/有一个适用于Windows Phone(中继线中的HAPPhone)的版本。从文章内容获取文档后,您可以获取它们的第一个img元素子元素。

var firstimage = document.DocumentNode.Descendants("img").FirstOrDefault(); 
+0

。我目前正在研究它,但在codeplex中没有关于它的文档。必须多搜索一下我的想法。 – MSicc

+0

源代码中的示例相当不错 – MatthieuGD

0

像这样的东西应该为你工作:

var document = XDocument.Parse(html); 
var items = new List<Item>(); 
var channel = (XContainer) document.Root.FirstNode; 
foreach (XElement item in channel.Nodes()) 
{ 
    try 
    { 
     var item = new Item(); 
     var nodes = item.Nodes().ToArray(); 
     foreach (XElement keyValue in nodes) 
     { 
      var value = keyValue.Value.Trim('\r', '\t', '\n', ' ').ToLower(); 
      switch (keyValue.Name.LocalName) 
      { 
       case "title": item.Title = value; break; 
       case "content:encoded": item.Content = value; break; 

       // TODO: add more fields 
      } 
     } 

     var match = Regex.Match(item.Content, "<img(.*?) src=\"(.*?)\"[^>]*>"); 
     item.FirstImageUrl = match.Groups[2].Value; 
    } 
    catch 
    { 
     // TODO: handle exception 
    } 
} 
return items; 

你只需要完成switch语句并创建Item类。

+0

好的,它使用我在上面发布的html。但是,如果我将变量更改为我的rss-feed url,则此操作无效。任何想法? – MSicc

+0

你能发布RSS提要网址吗?然后,我可以为你的问题量身定制正则表达式... –

+0

可能的问题:正则表达式区分大小写,也许你有'IMG'而不是'img'标签。也许你用'而不是' –