我尝试使用XML来存储我的数据,为此,定义了:
“教室管理”类里有“教室”,并定义XML序列化方法
“教室”类里有每周7日的“日程”
“日程”类里用字符串来存放每个小时的安排
===========================================
但是在我进行反序列化时,“教室”里的“日程”数量增加了一倍。
我查看了序列化生成的XML文件,里面的“日程”数量是对的。似乎是反序列化时的问题。我想了很久,不知道原因所在,还望指点。下面是的我的代码,很简单
=========================================== [Serializable]
public class 教室管理
{ static BindingList<教室> 所有教室 = new BindingList<教室>(); internal static void XML序列化所有教室(string savedFileName)
{ XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
StreamWriter myWriter = new StreamWriter(savedFileName);
mySerializer.Serialize(myWriter, 所有教室);
myWriter.Close();
} internal static void 反XML序列化所有教室(string savedFileName)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
FileStream myFileStream = new FileStream(savedFileName, FileMode.Open);
所有教室 = (BindingList<教室>)mySerializer.Deserialize(myFileStream);
myFileStream.Close();
}
} [Serializable]
public class 教室:IComparable<教室>
{
public string 编号 { get; set; }
public string 名称 { get; set; }
public BindingList<日程> 日程队列 { get; set; }
} [Serializable]
public class 日程
{
public string 星期几 { get; set; }
public string 时0 { get; set; }
public string 时1 { get; set; } }
“教室管理”类里有“教室”,并定义XML序列化方法
“教室”类里有每周7日的“日程”
“日程”类里用字符串来存放每个小时的安排
===========================================
但是在我进行反序列化时,“教室”里的“日程”数量增加了一倍。
我查看了序列化生成的XML文件,里面的“日程”数量是对的。似乎是反序列化时的问题。我想了很久,不知道原因所在,还望指点。下面是的我的代码,很简单
=========================================== [Serializable]
public class 教室管理
{ static BindingList<教室> 所有教室 = new BindingList<教室>(); internal static void XML序列化所有教室(string savedFileName)
{ XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
StreamWriter myWriter = new StreamWriter(savedFileName);
mySerializer.Serialize(myWriter, 所有教室);
myWriter.Close();
} internal static void 反XML序列化所有教室(string savedFileName)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
FileStream myFileStream = new FileStream(savedFileName, FileMode.Open);
所有教室 = (BindingList<教室>)mySerializer.Deserialize(myFileStream);
myFileStream.Close();
}
} [Serializable]
public class 教室:IComparable<教室>
{
public string 编号 { get; set; }
public string 名称 { get; set; }
public BindingList<日程> 日程队列 { get; set; }
} [Serializable]
public class 日程
{
public string 星期几 { get; set; }
public string 时0 { get; set; }
public string 时1 { get; set; } }
变量命名用中文,是我的个人习惯,见笑了
还请多提宝贵意见
{ XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
StreamWriter myWriter = new StreamWriter(savedFileName);
mySerializer.Serialize(myWriter, 所有教室);
myWriter.Close();
}
反序列化代码应该没错,你将文件写入模式设置为Create试试