我一直在MSDN和Google上搜寻有关以下问题的答案。
如何在c#中序列化一个如下命名的集合?
<foocollection>
<fooitem1></fooitem1>
<fooitem2></fooitem2>
...
</foocollection>
我看到您可以在DataContract中执行此操作:
[CollectionDataContract(Name="foocollection", ItemName = "fooitem")]
public class FooCollection<T> : List<T> {
public FooCollection(){}
public FooCollection(T[] items){
foreach(var i in items){
Add(i);
}
}
}
串行器是ASP.NET Web API中的默认XML串行器。该代码假定上面发布的XML来自客户端。
我已经成功地将上述序列化为动态序列,但是动态序列将不是可接受的解决方案。
如何使用下面的任何名称空间或其他名称空间成功完成序列化,但要注意我可以序列化到上述类?我愿意根据需要添加额外的类,以使上述工作有效,只要我不必为集合中的每个项目都创建一个类即可。
System.ComponentModel.DataAnnotations
System.Xml.Serialization
非常感谢您。
答案 0 :(得分:0)
由于您没有提到要使用哪种xml序列化方法,所以很难说,但是您可能应该使用DataContractSerializer来启用DataContract属性。要使用CollectionDataContractAttribute,您还应该具有将所述属性放入的收集类,例如example