퇴근5분전

xml을 일일이 파싱하고 잘라내는데 사용하는 여러가지 방법을 사용하던중
헬퍼를 만들어서 사용하고자 뚝딱... 만들었음.

예전 사용방법은 XmlDocument 를 이용하여 xml파일을 읽어들이고
XmlElement와 XmlAttribute를 이용해서 조작했으나 너무 번거롭고 소스도 지저분해짐.

해서 아래와 같은 헬퍼클래스를 만들어 사용함.

주의!   이건 순수 xml구조로 파일을 만들어내고 xsd같은 스키마 형태는 지원되지 않으므로 사용상 주의!!


Xml 파일 로딩 방법.

XmlHelper.XmlHelperClass xdoc = new XmlHelper.XmlHelperClass(@"C:\Documents and Settings\MyHome\My Documents\Visual Studio 2005\Projects\MyControl\MenuXml.xml");
            this.textBox1.Text = xdoc.ToXml();

--> Xml 생성방법.

XmlHelper.XmlHelperClass xdoc = new XmlHelper.XmlHelperClass();

            xdoc.Root_XmlElmt = new XmlHelper.XmlElmt("Root"); // 처음 Element 생성

            XmlHelper.XmlElmt e1 = new XmlHelper.XmlElmt("E1");
            e1.Att_Add("att1_Name", "att1_Value");
            xdoc.Root_XmlElmt.ElmtAdd(e1); // Depth처리로... 순서를 맞춰주면 좋음

            XmlHelper.XmlElmt e2 = new XmlHelper.XmlElmt("E2");
            e2.Att_Add("att2_Name", "att2_Value");

            e1.ElmtAdd(e2);

            XmlHelper.XmlElmt e3 = new XmlHelper.XmlElmt("E3");
            e3.Att_Add("att3_Name", "att3_Value");

            e2.ElmtAdd(e3);

            XmlHelper.XmlElmt e4 = new XmlHelper.XmlElmt("E4");
            e4.Att_Add("att4_Name", "att4_Value");

            e3.ElmtAdd(e4);

            XmlHelper.XmlElmt e5 = new XmlHelper.XmlElmt("E5");
            e5.Att_Add("att5_Name", "att5_Value");
            e5.Att_Add("att5a_Name", "att5a_Value");

            e1.ElmtAdd(e5);


            // xml 파일로 저장
            xdoc.Save(@"C:\Documents and Settings\MyHome\My Documents\Visual Studio 2005\Projects\MyControl\OpenXml\OpenXml\xml_Folder\ttt.xml");

            this.textBox1.Text = xdoc.ToXml();

// xdoc.Root_XmlElmt["E1"] 로 해당 엘리먼트를 뽑아낼수 있음.
// XmlElmt[] 로 반환되므로... 하위 엘리먼트까지 뽑아낼수 있음.


-- 결과 ---------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<Root>
    <E1 att1_Name="att1_Value">
        <E2 att2_Name="att2_Value">
            <E3 att3_Name="att3_Value">
                <E4 att4_Name="att4_Value">
                </E4>
            </E3>
        </E2>
        <E5 att5_Name="att5_Value" att5a_Name="att5a_Value">
        </E5>
    </E1>
</Root>

----------------------------------------------------------------------------------
<dll 파일 >

- Att_Add  : 속성 추가
- ElmtAdd : 엘리먼트 추가
- Save : 저장
- Load : 생성자를 통해 적용됨.( private 속성임 )

* 참고 : depth표현을 하고자 depth속성을 이용하는데 엘리먼트 추가시 자신의 depth를 조정받게 됨.
 ex ) A.ElmtAdd( B ); 
       A가 0이면 B가 1이 됨.   A가 3 이면 B가 4가됨.
      ToXml() 호출시 tab 문자가 뎁스만큼 붙어서 출력됨.



--> 2010년 3월 14일 추가사항..

Plugin 리스트 관리를 xml로 만들면서 사용하니 Attribute 뽑는것을 잊고 있었다.. 하여
GetAtt( string AttName )을 추가하였다.