从windows手机上的RSS源提取图像链接
我有一个问题。从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来提取供稿项目。
目前,我真的站在墙前来解决这个问题。
我愿意接受任何建议。
您可以使用HTML敏捷包http://htmlagilitypack.codeplex.com/有一个适用于Windows Phone(中继线中的HAPPhone)的版本。从文章内容获取文档后,您可以获取它们的第一个img元素子元素。
var firstimage = document.DocumentNode.Descendants("img").FirstOrDefault();
。我目前正在研究它,但在codeplex中没有关于它的文档。必须多搜索一下我的想法。 – MSicc
源代码中的示例相当不错 – MatthieuGD
像这样的东西应该为你工作:
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
类。
好的,它使用我在上面发布的html。但是,如果我将变量更改为我的rss-feed url,则此操作无效。任何想法? – MSicc
你能发布RSS提要网址吗?然后,我可以为你的问题量身定制正则表达式... –
可能的问题:正则表达式区分大小写,也许你有'IMG'而不是'img'标签。也许你用'而不是' –
如果你可以将你的rss feed转换为客户端的一个字符串,那么你只需要解析它就可以得到你的图像。 – BigL
也许这个链接可以帮助您: http://stackoverflow.com/questions/319591/reading-non-standard-elements-in-a-syndicationitem-with-syndicationfeed – BigL
我检查了您的链接。这不是我正在寻找的。我想收集一个随机生成的URL到图像,将图像绑定到这个URL。目前我正在玩RegEx来解决这个问题。任何想法呢? Thx – MSicc