簡體   English   中英

向RSS提要添加擴展名時.Net SyndicationFeed序列化錯誤

[英].Net SyndicationFeed serialization error when adding extensions to the RSS feed

我創建一個.NET Framework SyndicationFeed:

SyndicationFeed feed = SyndicationFeed.Load(xmlReader);

然后創建一個新項目:

var newItem = new SyndicationItem();
newItem.Id = sourceFeedItem.ItemID;
newItem.Title = new TextSyndicationContent(sourceFeedItem.ItemTitle);

然后添加一些iTunes項目擴展名:

var iTunesExt = newItem.ElementExtensions;
iTunesExt.Add(new XElement("MyElement", "Whatever");
newItem.ElementExtensions.Add(iTunesExt);

然后,將該items添加到items列表中:

List<SyndicationItem> items = new List<SyndicationItem>();
items.Add(newItem);

並設置提要的Items屬性。

feed.Items = items;

最后,我將SyndicationFeed feed寫入XmlWriter

feed.SaveAsRss20(xmlWriter);

如果添加擴展名,換句話說,如果newItem.ElementExtensions.Add(iTunesExt); 行不執行。 但是,如果該行執行,則在執行feed.SaveAsRss20(xmlWriter);時出現以下錯誤feed.SaveAsRss20(xmlWriter);

類型'System.ServiceModel.Syndication.SyndicationElementExtension'無法序列化。 考慮使用DataContractAttribute屬性標記它,並使用DataMemberAttribute屬性標記要序列化的所有成員。 如果類型是集合,請考慮使用CollectionDataContractAttribute對其進行標記。

如何用DataContractAttribute屬性標記iTunesExt 還是我誤會了?

iTunesExt.Add(new XElement("MyElement", "Whatever");

嘗試將其修改為:

iTunesExt.Add(new XElement("MyElement", "Whatever"), 
    new DataContractSerializer(typeof(XElement)));

這使您可以指定使用DataContractSerializer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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