퇴근5분전


일정관리 프로그램을 설계중 데이타를 저장하고 꺼내 써야 하는 곳에 dB까지 쓸필요없으니 xml을 또 남용하자 하여

XmlHelper를 FileMng라 붙여서 매니져급을 만들었다.

이제 클래스 하나에 매니져 상속해서 저장하고 꺼내쓰면 된다 싶었는데... 왠걸..

데이타클래스가 세가지일때 세가지를 모두 정의해야 되는 상황이 발생하였다. 아.. 좀 애매한데... 싶어서..

어디선가 본 [DataContract]와 [DataMember] 를 찾아서 열심히 뒤지던중..

Hoons C# 강좌란에 김태훈님이 기록하신 글중 예제에 첨부된걸 보고 바로 MSDN검색에 들어갔으나..

아줸장... 예제 대로 쳐놓았으나.. 파일은 오간데 없고 저장이 되어도 xml형태가 아니다. 오~~ ...

이런걸로 시간끌수 없다라고 판단하여 조금더 고민끝에... Attribute라는 걸 다시 뒤적 뒤적...

이유인즉 XmlFile을 만들때 데이타를 일정한 구조로 XmlHelper를 통해 읽고 쓰고 하는데 이때

XmlHelper를 사용하는 클래스는 엘리멘트나 속성을 모두 상수로 지정해주었었다... 이리 조낸 복잡해진다.

이걸 그냥 Class 선언할때 Attribute로 붙이면 어떻게든 되지 않을까 싶었다.

솔직히 이전까지도 Attribute가 어떤놈인지 알고는 있는데 막상... 어따가 어떻게 써먹어? 했었는데...

이제 써먹을 수 있게 되었다. 

    [XmlRootTag("CATEGORY", "CODE")]
    public class JsFWCategory
    {
        string _Name = string.Empty;
        [XmlATT_Tag]
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }

        string _Desc = string.Empty;
        [XmlATT_Tag]
        public string Desc
        {
            get { return _Desc; }
            set { _Desc = value; }
        }
    }

위에 클래스가 XmlFileMng를 통해 XmlHelper로 전달되고 Xml파일 내 하나의 Element 행이 된다.

오.. 멋져..

이제부턴 상수선언할필요도 없고 넣을녀석 Class만 정의하고 던져주면 저장이 된다. 또 읽어올때는 object 주고, type지정해서 던져주면 꺼내올수 있다.


            CategoryTb c = new CategoryTb();  // XmlFileMng 를 이용할뿐...
            c.Load(); // XmlFile읽기.
- 저장할때
            JsFWCategory j = new JsFWCategory();
            j.Desc = "jsDEsc";
            j.Name = "jsNAme";

            c.AddRow(j);
            c.Save(); // 저장
- 꺼내올때
            XmlElmt exml = c.Find("015");  // xmlFile에서 ID값 015번에 Element를 찾아서 반환해줌.
            object obj = null;
            if( exml != null) obj = c.GetRow(exml, typeof(JsFWCategory));
            if (obj is JsFWCategory) this.textBox1.Text = ((JsFWCategory)obj).Name;


아래는 만들어진 내용... 

 <?xml version="1.0" encoding="utf-8" ?>

- <CATEGORY ID_IDENTITY="55">
    ... 생략...
        <CODE DESC="jsDEsc" ID="055" NAME="jsNAme" />
</CATEGORY>



완성!

이제 좀더 xml이 쉽게 다뤄질듯 함..

'# 1) 프로그래밍' 카테고리의 다른 글

Xml 관련 객체가 한번더 정리가 되었다.  (0) 2010.04.01
XML 클래스다루기...  (0) 2010.03.31
개발을 하다보니...  (0) 2010.03.29
배열 정렬하기...?  (0) 2010.02.25
Enum객체 관련 설명.  (0) 2010.02.10