퇴근5분전

  

   회의록 프로그램을 만들면서 데이타를 객체로 구성하고, 저장데이타를 xml로 만들었다.

이때 xml 관련 Attribute등을 이용해서 직렬화과정을 거치게 되는데

 

아래껀 굳이 xml 관련 Attribute 를 지정하지 않아도 되더라...

 

 

 

public class Tmp
    {
        public string Name { get; set; }

        public List<CTmp> Items { get; set; }
        public Tmp()
        {
            Items = new List<CTmp>();
        }
    }

    public class CTmp
    {
        public string Name { get; set; }
        public string DESC { get; set; }
    }

 

 

 

 

 

            Tmp root = new Tmp();
            root.Name = "루트";
            root.Items.Add(new CTmp() { Name = root.Name + "_자식1", DESC = "자식1" });
            root.Items.Add(new CTmp() { Name = root.Name + "_자식2", DESC = "자식2" });
            root.Items.Add(new CTmp() { Name = root.Name + "_자식3", DESC = "자식3" });
            root.Items.Add(new CTmp() { Name = root.Name + "_자식4", DESC = "자식4" });

 

            string xml = root.Serialize<Tmp>();
            Tmp rt = xml.DeSerialize<Tmp>();

 

 

 

 public static class XmlEX
    {
        public static string Serialize<T>(this T value)
        {
            if (value == null) return string.Empty;

            var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));

            using (var stringWriter = new System.IO.StringWriter())
            {
                using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Indent = true }))
                {
                    xmlSerializer.Serialize(xmlWriter, value);
                    return stringWriter.ToString();
                }
            }
        }

        public static T DeSerialize<T>(this string xml) where T : class, new()
        {
            T obj = default(T);
            var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
            using (var stringReader = new System.IO.StringReader(xml))
            {
                using (var reader = XmlReader.Create(stringReader, new XmlReaderSettings()))
                {
                    obj = xmlSerializer.Deserialize(reader) as T;
                }
            }
            return obj;
        }
    }

'# 4) .Net ( Vs 2010 ) > C#' 카테고리의 다른 글

데이타 테이블정의서 Excel 생성하기.  (0) 2016.10.18
로또 체크기...?  (0) 2016.10.18
DevExpress WinForm] Layout 보완...  (0) 2014.10.12
DevExpress WinForm] Layout Control  (0) 2014.10.12
바로가기 만들기] shortcut  (0) 2014.09.27