dev/asp.net, c#

[c#] CLASS to XML 로 Serialize 할때 CDATA 섹션 으로 생성하기

코딩for 2021. 2. 5. 17:24
반응형

 

 

C# 데이터를 XML 데이터로 만들때 

XML 엘러먼트에 특수문자(html tag 등의)가 들어가면  &, <, > 등의 문자가 변환되어 입력이된다.

 

이러한 결과로 인해 원래 문자 그대로 입력을 하기 위해서는 CDATA 섹션에 담아야 그대로 저장됩니다.

 

 

클래스 데이터 모델을 XML 데이터로 Serialize 할때 CDATA 섹션으로 생성이 되도록 합니다.

 

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                var data = new CategoryData { code = "A", code_nm = "<div> A Class  </div>" };
                //class  To  XML   (CDATA Section);
                //파일에 출력하는 예
                using (StreamWriter wr = new StreamWriter("d:\\text.xml"))
                {
                    XmlSerializer xs = new XmlSerializer(typeof(CategoryData));
                    xs.Serialize(wr, data);
                }
            }
        }

        // 데이터 모델
        public class CategoryData
        {
            public string code { get; set; }
    
            [XmlIgnore]
            public string code_nm { get; set; }

            [XmlElement("code_nm")]
            public System.Xml.XmlCDataSection code_nmCDATA
            {
                get
                {
                    return new System.Xml.XmlDocument().CreateCDataSection(code_nm);
                }
                set
                {
                    code_nm = value.Value;
                }
            }
        }

* cdata 섹션으로 만들 멤버에 [XmlIgnore] anotation 을 이용하여 만들어줍니다.

* System.Xml.XmlCDataSection데이터 타입으로 cdata 형으로 get; set; 을 만듭니다.

   예제와 같이 cdata 데이터형 멤버를 xml 타입으로 생성합니다.

 

 

반응형