当前位置:编程学习 > C#/ASP.NET >>

XML 反序列化,内部对象数量增加1倍,是何缘由?

我尝试使用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序列化代码:

        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<教室>));
            StreamWriter myWriter = new StreamWriter(savedFileName);
            mySerializer.Serialize(myWriter, 所有教室);
            myWriter.Close();
        }
--------------------编程问答--------------------
过年了,没人解决问题啊 --------------------编程问答-------------------- 序列化/反序列化 教室[] 集合,而不要整什么 BindingList<教室>。 --------------------编程问答-------------------- 你是如何调用反序列化的,会不会2次调用
反序列化代码应该没错,你将文件写入模式设置为Create试试
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,