Извлечение ссылки на изображение из RSS-канала на Windows Phone - PullRequest
0 голосов
/ 29 октября 2011

У меня есть вопрос.

Как мне извлечь URL из RSS-канала?

Строка, которую мне нужно извлечь, выглядит примерно так:

><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" />

Это на RSS-канале моего WordPress-блога с самообслуживанием, в разделе <content:encoded>.

Я хочу получить первое изображение записи, чтобы получить его вместе с заголовком (это работает) в моем ListBox.

Однако я много чего пытался добиться, но ничего не получается.

Я работаю с Syndication.dll в Silverlight 3 для извлечения элементов канала.

Сейчас я стою перед стеной, чтобы решить эту проблему.

Я открыт для любых предложений.

Ответы [ 2 ]

0 голосов
/ 30 октября 2011

Что-то вроде этого должно работать для вас:

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 голосов
/ 29 октября 2011

Вы можете использовать HTML Agility Pack http://htmlagilitypack.codeplex.com/ Существует версия для Windows Phone (HAPPhone в багажнике).После получения документа из содержимого поста вы можете получить первый из них дочерний элемент img.

var firstimage = document.DocumentNode.Descendants("img").FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...