如何在ItemName中使用数字序列化XML集合?

时间:2019-02-04 17:53:12

标签: c# wcf serialization datacontract

我一直在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

非常感谢您。

1 个答案:

答案 0 :(得分:0)

由于您没有提到要使用哪种xml序列化方法,所以很难说,但是您可能应该使用DataContractSerializer来启用DataContract属性。要使用CollectionDataContractAttribute,您还应该具有将所述属性放入的收集类,例如example