序列化多个对象
我的序列化代码是这样的..
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
)并序列化它,但你可能得到这样的输出:
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"));