Добавление MRSS (медиа) в SyndicationFeed

У меня есть канал синдикации. При сериализации с использованием Rss20FeedFormatter я получаю пространства имен xmlns:cf и xmlns:cfi, объявленные в xml. Медиа-элемент остается встроенным.

<media:thumbnail media:url="http://arwen.palantir.za:8080/signate/thumbnail/dXVpZDoxNjlkMzIyOS0zYjk5LTQ2NDctOTc5MS00OTJiYmJmNGM0MTkvUEdTMDkwMC5QREY=" media:width="200" media:height="200" xmlns="http://www.w3.org/2005/Atom" xmlns:a="http://search.yahoo.com/mrss" xmlns:media="http://search.yahoo.com/mrss"></media:thumbnail>

Я уверен, что именно поэтому миниатюры отображаются неправильно. Как добавить медиа: миниатюру и чтобы она работала правильно. Я использую поиск Windows 7 для просмотра, поэтому он определенно поддерживает миниатюру.

Я хотел бы, чтобы СМИ были объявлены в заголовке xml, как и должно быть.

Это мой код:

        item.ElementExtensions.Add(
            new XElement(mrss + "thumbnail",
                new XAttribute(XNamespace.Xmlns + "media", mrss),
                new XAttribute(mrss + "url", url + Convert.ToBase64String(Encoding.ASCII.GetBytes(item.Id))),
                new XAttribute(mrss + "width", 200),
                new XAttribute(mrss + "height", 200)
            ).CreateReader());

2 ответа

Вам, безусловно, нужно добавить правильное пространство имен, как объясняет Крэгли, но вот как создать правильный медиа: элемент thumbnail:

    XNamespace _yahooMediaNamespace = "http://search.yahoo.com/mrss/";
    // Result is a SyndicationItem
    result.ElementExtensions.Add(
        new SyndicationElementExtension(
            new XElement(
                _yahooMediaNamespace + "thumbnail", 
                new XAttribute("url", "http://www.example.com/image.jpg")
            )
        )
    );

Я думаю, что это тот случай, когда вам просто нужно объявить свои пространства имен каналов, прежде чем использовать их. Я дал ответ на другой вопрос, который показывает, как объявить пространство имен и затем использовать его в ElementExtension.

Другие вопросы по тегам