1, 如果要序列化成 指定格式 那么就要 用指定的 对象来操作,
我是序列化成xml用的是XmlSerializer ,那么你序列化用这个对象 反序列化时 也得用这个对象。
先定义一个集合,
List<Person> personList=new List<Person>{
new Person{Id=1,Name="2B",Age=28},
new Person{Id=2,Name="3B",Age=29}
};
XmlSerializer xs=new XmlSerializer(typeof(List<Person>));
Stream stream=new FileStream("d://test.xml",FileMode.Create,FileAccess.Write,FileShare.None);//生成xml文件保存
xs.Serializer(stream,personList);//进行序列化
stream.close();//最后关闭流
这样文件就保存起来了,
下面来读取反序列化:
FileStream fs=new FileStream("d://test.xml",FileMode.Open);//打开文件
var plist=(List<Person>)xs.Deserializer(fs);
fa.close();
这样就OK了。 超简单
但是 有个问题,这样生成的xml的根节点 ,是自动生成的 有时候我们想去改掉成自己想要的名称,可以这样。
XmlAttributeOverrides overrides=new XmlAttributeOverrides();
XmlAttribute attr=new XmlAttribute();
attr.XmlRoot=new XmlRootAttribute("MyName");
overrides.add(typeof(List<Person>),attr);
//这里要修改下
XmlSerializer xs=new XmlSerializer(typeof(List<Person>),overrides);
这样就OK了, 但是overrides.add(typeof(List<Person>),attr); 这里的 typeof(List<Person>) 一定要和XmlSerializer xs=new XmlSerializer(typeof(List<Person>),overrides); 这里面的类型保持一样,否则 自定义的节点名字 会无效,但是程序不会报错的。