2016-07-16 7 views
0

создать .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; 

и, наконец, я пишу SyndicationFeedfeed с XmlWriter.

feed.SaveAsRss20(xmlWriter); 

Все идет хорошо, если расширения не добавил, другими словами, если newItem.ElementExtensions.Add(iTunesExt); линия не выполняет. Но если строка выполняется, я получаю следующую ошибку при выполнении feed.SaveAsRss20(xmlWriter);.

Тип 'System.ServiceModel.Syndication.SyndicationElementExtension' не может быть сериализации. Рассмотрите его маркировку с атрибутом DataContractAttributeи отметьте все его элементы, которые вы хотите сериализовать с атрибутом DataMemberAttribute. Если тип является коллекцией, рассмотрите его маркировку CollectionDataContractAttribute.

Как я могу пометить iTunesExt с атрибутом DataContractAttribute? Или я не понимаю?

ответ

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

Попробуйте изменить это:

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

Это позволяет определить использование DataContractSerializer.

+0

То, что я получаю сейчас, это «Объект типа« System.Xml.Linq.XNodeReader »не может быть сериализован на верхнем уровне для IXmlSerializable корневого типа« System.Xml.Linq.XElement », поскольку его параметр IsAny равен true Этот тип должен записывать все его содержимое, включая корневой элемент. Убедитесь, что реализация IXmlSerializable верна. ". Я собираюсь сделать еще один ресурс, потому что я не совсем понимаю, что еще понимаю ошибки. – Howiecamp

 Смежные вопросы

  • Нет связанных вопросов^_^