序列化多个对象

我的序列化代码是这样的..

public class slab { public int lowerlimit {get; set;} public int upperlimit { get; set; } public int percentage { get; set; } } public class Details { static void Main(string[] args) { slab s= new slab(); s.lowerlimit = 0; s.upperlimit = 200000; s.percentage = 0; XmlSerializer serializer = new XmlSerializer(s.GetType()); StreamWriter writer = new StreamWriter(@"filepath"); serializer.Serialize(writer.BaseStream, s); } } 

它工作正常,我得到输出文件:

   0 200000 0  

但是,如何序列化多个对象? 我想得到一个输出文件

   0 200000 0   200000 500000 10   500000 1000000 20   1000000 0 30   

实际上,所需的输出格式不是有效的XML,因为XML文件总是需要单个根元素。 你可以把你的slab s放到一个列表中( List slabs = new List(); )并序列化它,但你可能得到这样的输出:

   0 200000 0   200000 500000 10   500000 1000000 20   1000000 0 30   

编辑
另一种序列化方法可能是这样,告诉序列化器更多关于根元素:

 List slabs = new List(); slabs.Add(...); XmlSerializer serializer = new XmlSerializer(slabs.GetType(), new XmlRootAttribute("slabs")); StreamWriter writer = new StreamWriter(@"filepath"); serializer.Serialize(writer.BaseStream, slabs); 

您可以使用以下代码。

 List listSlabs = new List(); //add Slab to listSlabs 

您可以序列化列表。

要很好地封装并确保类型名称,您可以创建一个名为slabs的新对象,它只包含一个List 。 将平板添加到此新对象并将其序列化。

使用

 XmlSerializer serializer = new XmlSerializer(**slabs**.GetType(), new XmlRootAttribute("slabs")); 

代替

 XmlSerializer serializer = new XmlSerializer(s.GetType(), new XmlRootAttribute("slabs"));