создать .NET Framework SyndicationFeed:.Net SyndicationFeed ошибка сериализации при добавлении расширений в RSS-канал
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
списке:
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);
.
Тип 'System.ServiceModel.Syndication.SyndicationElementExtension' не может быть сериализации. Рассмотрите его маркировку с атрибутом DataContractAttributeи отметьте все его элементы, которые вы хотите сериализовать с атрибутом DataMemberAttribute. Если тип является коллекцией, рассмотрите его маркировку CollectionDataContractAttribute.
Как я могу пометить iTunesExt
с атрибутом DataContractAttribute
? Или я не понимаю?
То, что я получаю сейчас, это «Объект типа« System.Xml.Linq.XNodeReader »не может быть сериализован на верхнем уровне для IXmlSerializable корневого типа« System.Xml.Linq.XElement », поскольку его параметр IsAny равен true Этот тип должен записывать все его содержимое, включая корневой элемент. Убедитесь, что реализация IXmlSerializable верна. ". Я собираюсь сделать еще один ресурс, потому что я не совсем понимаю, что еще понимаю ошибки. – Howiecamp