Добавление 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.