내가 만들 확장을 추가 : 좀 아이튠즈 항목을 추가 그리고닷넷 SyndicationFeed 직렬화 오류가 때 .NET 프레임 워크 SyndicationFeed RSS 피드
var newItem = new SyndicationItem();
newItem.Id = sourceFeedItem.ItemID;
newItem.Title = new TextSyndicationContent(sourceFeedItem.ItemTitle);
:
다음SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
내가 새 항목을 만들 확장 :
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로 표시하는 것이 좋습니다.
DataContractAttribute
속성으로 iTunesExt
을 어떻게 표시 할 수 있습니까? 또는 나는 그것을 오해하고 있는가?
IsAny 설정이 'true'이므로 'System.Xml.Linq.XNodeReader'유형의 객체를 IXmlSerializable 루트 유형 'System.Xml.Linq.XElement'의 최상위 레벨에서 직렬화 할 수 없습니다. 이 형식은 루트 요소를 포함한 모든 내용을 작성해야하며 IXmlSerializable 구현이 올바른지 확인하십시오. 나는 내가 아직 오류를 이해하지 못하기 때문에 더 많은 자원을 할 것입니다. – Howiecamp