Class를 XML변환, XML을 Class변환
회의록 프로그램을 만들면서 데이타를 객체로 구성하고, 저장데이타를 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 |