[英]Rss20FeedFormatter and RRS2 extensions
我想使用RSS2擴展功能將自己的非標准元素添加到RSS feed中,如下所述:
http://cyber.law.harvard.edu/rss/rss.html#extendingRss :
但是,我認為.Net Rss20FeedFormatter類不支持此功能。
我的代碼如下所示:
public Rss20FeedFormatter GetRSS()
{
var feed = new SyndicationFeed(....);
feed.Items = new List<SyndicationItem>();
// add items to feed
return new Rss20FeedFormatter(feed);
}
如果不支持它,除了按元素創建XML元素還有其他選擇嗎?
這是我的發現。 花了我一段時間才能弄清楚。
這就是您要做的,您的供稿必須具有名稱空間
XNamespace extxmlns = "http://www.yoursite.com/someurl";
feed.AttributeExtensions.Add(new XmlQualifiedName("ext", XNamespace.Xmlns.NamespaceName), extxmlns.NamespaceName);
feed.ElementExtensions.Add(new XElement(extxmlns + "link", new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml")));
return new Rss20FeedFormatter(feed, false);
您的項目必須是派生類,並在WriteElementExtensions中編寫擴展屬性,並確保為它們添加命名空間前綴(不必這樣做,但這是使其成為有效RSS所必需的)。
class TNSyndicationItem : SyndicationItem
protected override void WriteElementExtensions(XmlWriter writer, string version)
{
writer.WriteElementString("ext:abstract", this.Abstract);
writer.WriteElementString("ext:channel", this.Channel);
}
如果查看諸如firefox之類的RSS閱讀器,擴展屬性將被忽略,您還需要編寫代碼以讀取它們。
網址http://www.yoursite.com/someurl不必存在,但是您需要使用它來定義名稱空間並使RSS有效。 通常,您只需要在該頁面上放置一個頁面,其中說明Feed的外觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.