您的位置:首页 > 其它

对象的xml序列化、反序列化

2011-08-01 09:35 531 查看
using System;

using System.Collections.Generic;

using System.IO;

using System.Xml.Serialization;

namespace Demo026

{

    class Program

    {

        static void Main(string[] args)

        {

            var person = new Person() { Id = 1, Name = "这个测试" };

            var orders = new List<Order>()

                             {

                                 new Order() {Id = 1, PersonId = 1},

                                 new Order() {Id = 211, PersonId = 1},

                                 new Order() {Id = 3, PersonId = 1, OrderDate = DateTime.Today.AddMinutes(89)}

                             };

            person.Orders = orders;

            string result = ObjectHelper.XmlSerialize(person);

            Console.WriteLine(result);

            var test = ObjectHelper.XmlDeserialize<Person>(result);

            if (test != null)

            {

                Console.WriteLine(test.Name);

                Console.WriteLine(test.Orders[2].OrderDate.ToString("yyyy-MM-dd HH:mm:ss"));

            }

            Console.ReadKey();

        }

    }

    public class Person

    {

        public int Id { get; set; }

        public string Name { get; set; }

        public List<Order> Orders { get; set; }

    }

    public class Order

    {

        public int Id { get; set; }

        public int PersonId { get; set; }

        public DateTime OrderDate { get; set; }

    }

    public class ObjectHelper

    {

        /// <summary>

        /// 将对象序列化为xml字符串

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="obj"></param>

        /// <returns></returns>

        public static string XmlSerialize<T>(T obj)

        {

            using (var writer = new StringWriter())

            {

                new XmlSerializer(obj.GetType()).Serialize((TextWriter)writer, obj);

                return writer.ToString();

            }

        }

        /// <summary>

        /// 将xml字符串反序列化为对象

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="xml"></param>

        /// <returns></returns>

        public static T XmlDeserialize<T>(string xml)

        {

            T result = default(T);

            if (!string.IsNullOrEmpty(serialObj))

            {

                using (StringReader reader = new StringReader(serialObj))

                {

                    var serializer = new XmlSerializer(typeof(T));

                    result = (T)serializer.Deserialize(reader);

                }

            }

            return result;

        }

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml string class null 测试