簡體   English   中英

Rss20FeedFormatter和RRS2擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM