개발/c#

C# Xml Serialize

나무 :D 2021. 4. 17. 17:09

직렬화

using System.IO;
using System.Xml.Serialization;

public static class XmlUtil
{
    public static string XmlSerialize<T>(T obj) where T : class
    {
        using (StringWriter writer = new StringWriter())
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            xmlSerializer.Serialize(writer, obj);
            return writer.ToString();
        }
    }

    public static T XmlDeserialize<T>(string path) where T : class
    {
        using (StreamReader reader = new StreamReader(path))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            return xmlSerializer.Deserialize(reader) as T;
        }
    }
}

Object

using System;
using System.Collections.Generic;
using System.Xml.Serialization;

[Serializable()]
[XmlRoot("result")]
public class CorpCodeTable : BaseTable
{
    public static readonly string Key = "CorpCodeTable";

    [XmlElement(ElementName = "list")]
    public List<CorpCodeData> CorpCodeDataList { get; set; }
}
using System;
using System.Xml.Serialization;

[Serializable()]
[XmlRoot("list")]
public class CorpCodeData
{
    [XmlElement("corp_code")]
    public string corpCode;
    [XmlElement("corp_name")]
    public string corpName;
    [XmlElement("stock_code")]
    public string stockCode;
    [XmlElement("modify_date")]
    public string modifyDate;
}

사용 방법

CorpCodeTable corpCodeTable = XmlUtil.XmlDeserialize<CorpCodeTable>(filePath);

XML 데이터

<?xml version="1.0" encoding="UTF-8"?>
<result>
    <list>
        <corp_code>00434003</corp_code>
        <corp_name>다코</corp_name>
        <stock_code> </stock_code>
        <modify_date>20170630</modify_date>
    </list>
    <list>
        <corp_code>00434456</corp_code>
        <corp_name>일산약품</corp_name>
        <stock_code> </stock_code>
        <modify_date>20170630</modify_date>
    </list>
</result>
반응형