C# 数组和xml

本文介绍如何使用C#实现对象数组到XML文件的序列化及从XML文件读取并反序列化为对象数组的过程。包括使用XmlSerializer类进行序列化的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static void Main(string[] args)
        {
            //初使化数组元素
            object[] o = Init().ToArray();
            ///
            /// 此处可理解成:
            /// 要转化的对象是什么类型,以转化格式的时候按此类型格式进行转化
            Type type = o.GetType();
            string path = @"C:\Users\wjl\Desktop\test.xml";
            WriteXmlSerializer(type, o,path);
            ReadeXmlSerializer(type,path);
        }
        /// <summary>
        /// 读取XML,并将其转化成数组
        /// </summary>
        /// <param name="type"></param>
       /// <param name="path"></param>
        private static void ReadeXmlSerializer(Type type,string path)
        {
            string temp = "";
            object[] o = new object[10];
            //模拟读取数据库数据
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.UTF8);
            temp = sr.ReadToEnd();
 
            //将xml转成object[]
            XmlSerializer xml = new XmlSerializer(type);
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(temp)))
            {
                try
                {
                    o = (object[])xml.Deserialize(ms);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// 将数组转化成XML,
        /// </summary>
        /// <param name="type"></param>
        /// <param name="o"></param>
        /// <param name="path"></param>
        private static void WriteXmlSerializer(Type type,object[] o,string path)
        {
            string temp = "";
            XmlSerializer xml = new XmlSerializer(type);
            using (MemoryStream stream = new MemoryStream())
            {
                try
                {
                    xml.Serialize(stream, o);
                    temp = Encoding.UTF8.GetString(stream.GetBuffer(), 0, (int)stream.Length);
                }
                catch (Exception)
                {
                    throw;
                }
                ///模拟数据库存储
                StreamWriter sw = new StreamWriter(path,false,Encoding.UTF8);
                sw.Write(temp);
                sw.Close();
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值