Как добавить SyndicationElementExtension к SyndicationItem
Использование классов.NET System.ServiceModel.Syndication...
Я хотел бы добавить новый SyndicationElementExtension в SyndicationItem, который будет экспортировать следующий XML:
<media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" />
Что-то вроде:
syndicationItem.ElementExtensions.Add(new SyndicationElementExtension("thumbnail", "http://video.search.yahoo.com/mrss", ?
Как создать простое SyndicationElementExtension с несколькими атрибутами?
2 ответа
Нашел ответ здесь: http://msdn.microsoft.com/en-us/library/bb943475.aspx
Класс SyndicationElementExtensionCollection также можно использовать для создания расширений элементов из экземпляра XmlReader. Это позволяет легко интегрировать с API обработки XML, такими как XElement, как показано в следующем примере кода.
feed.ElementExtensions.Add(new XElement("xElementExtension",
new XElement("Key", new XAttribute("attr1", "someValue"), "Z"),
new XElement("Value", new XAttribute("attr1", "someValue"),
"15")).CreateReader());
Просто для упрощения для следующего парня, который придет и попытается выяснить это, вот рабочий пример добавления миниатюры основного элемента (в данном случае вприложении RSS 2.0) в соответствии с документацией:
SyndicationItem item = new SyndicationItem();
// populate item...
item.ElementExtensions.Add(
new XElement( "enclosure",
new XAttribute( "type", "image/jpeg" ),
new XAttribute( "url", "http://path.to/my/image.jpg" )
).CreateReader()
);
Вы также можете сбросить атрибуты и просто установить текстовое содержимое после имени тега, если вы хотите простой тег, т.е. <comments>http://my.comments/feed</comments>
,