xml的序列化和反序列化

来源:互联网 发布:高顿网校cpa价格知乎 编辑:程序博客网 时间:2024/06/14 17:47

xml的序列化和反序列化简单例子如下:

   [XmlRoot("Person")]    public class Person    {         [XmlElement("Name")]        public string Name;         [XmlElement("Age")]        public int Age;    }    class Program    {        static void Main(string[] args)        {            Person p = new Person();            p.Name = "Stacey"; p.Age = 30;            XmlSerializer xs = new XmlSerializer(typeof(Person));            using (Stream s = File.Create("person.xml"))                xs.Serialize(s, p);            Person p2;            using (Stream s = File.OpenRead("person.xml"))                p2 = (Person)xs.Deserialize(s);            Console.WriteLine(p2.Name + " " + p2.Age);   // Stacey 30        }    }

两个模板:

序列化

    class XmlStreamSerializer<T>    {        public Stream Serialize(T model)        {            MemoryStream stream = new MemoryStream();            XmlSerializer serializer = new XmlSerializer(typeof(T));            serializer.Serialize(stream, model);            stream.Position = 0;            return stream;        }    }

反序列化:

 class XmlStreamDeserializer<T>     {        public T Deserialize(Stream xml)        {            T model;            Stream xmlStream = xml;            try            {                XmlSerializer serializer = new XmlSerializer(typeof(T));                model = (T)serializer.Deserialize(xml);            }            catch (XmlException ex)            {                throw new ResponseDeserializationException(ex.Message, ex);            }            catch (InvalidOperationException ex)            {                throw new ResponseDeserializationException(ex.Message, ex);            }            finally            {                if (xmlStream != null)                {                    xmlStream.Dispose();                }            }            return model;        }    }