• Daum블로그로 구독
  • HanRSS
  • Google
  • RSS
  • Bloglines

IT2012. 1. 13. 22:48

C# XML 저장, 로딩 및 수정 / C# How To Modify and Save XML in the .NET


.NET, XML, XML 저장, XML 수정 ,C#, C sharp, C#, 프로그래밍, XML Modify, XML Save,XmlDocument Class

C#에서 XML을 다루어 보자.

요즘 프로그램의 대부분이 XML(eXtensible Markup Language)을 사용하여 간단한 데이터의 저장, 프로그램 설정 저장 등 다양하게 사용하다 보니 C#을 다루는 입장에서 한번은 다루어야 할 것 같아 포스팅을 합니다.

포스팅 내용은 C#을 사용하여 아래의 항목을 설명하도록 합니다.
  • XML 화일 로딩
  • XML 데이터 검색 
  • XML 데이터 트리 구조화
  • XML Node 추가 및 데이터 추가
  • XML 저장 
     
 1. System.Xml 네임스페이스를 참조하는지 않을 경우는 아래 네임스페이스를 추가합니다.
  1.  using System.Xml; 
2. XmlDocument 클래스의 Load 메서드를 사용해서 XML화일을 로드하며 Save 메서드를 사용하여 저장 합니다.
  1.  XmlDocument myXmlDocument = new XmlDocument();
     myXmlDocument.Load("CATEGORY_LIST.xml");
     myXmlDocument.Save("CATEGORY_LIST.xml");
    
3. XmlDocument 클래스의 SelectNodes 메서드를 사용해서 XML화일을 검색 합니다.
  1.  myXmlDocument.SelectNodes("//CATEGORY_LIST//CATEGORY_NAME")
4. 사용된 XML 화일 구조
  1. <category_list>
    <category_name>all4cs.tistory.com</category_name>
    <category_name>Notice</category_name>
    <category_name>Guest Book</category_name>
    <category_name>C Sharp(C#)</category_name>
    <category_name>Javascript</category_name>
    <category_name>Flash Game</category_name>
    <category_name>ORIGAMI</category_name>
    <category_name>IT/WEB</category_name>
    <category_name>Photos</category_name>
    </category_list> 
    

5. C# XML 다루기 소스 코드
        private void Form1_Load(object sender, EventArgs e)
        {
            //최상위 Node 생성 (여기서는 4CS)
            TreeNode trvNode = new TreeNode();
            trvNode.Text = "4Cs";

            //XML 화일 로딩
            m_xmlCategory = new XmlDocument();
            m_xmlCategory.Load(Application.StartupPath + @"\xml_data\CATEGORY_LIST.xml");

            //XML 화일에서 카테고리 검색
            XmlNodeList xNodeLst = m_xmlCategory.SelectNodes("//CATEGORY_LIST//CATEGORY_NAME");
            for (int i = 0; i < xNodeLst.Count; i++)
            {
                 //검색된 리스트를 최상위 노드 하부에 추가
                trvNode.Nodes.Add(xNodeLst.Item(i).ChildNodes.Item(0).Value.ToString()); 
            }
            // 최상위 노드를 treeView 컨트롤에 추가
            trvCategory.Nodes.Add(trvNode);

            //모든 카테고리 확장(펼치기)
            trvCategory.ExpandAll();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            XmlNode xnode = m_xmlCategory.SelectSingleNode("//CATEGORY_LIST");
            XmlElement xelement = m_xmlCategory.CreateElement("CATEGORY_NAME");
            xelement.InnerText = textBox1.Text.ToString(); 
            xnode.AppendChild(xelement);

            //XML 저장
            m_xmlCategory.Save(Application.StartupPath + @"\xml_data\CATEGORY_LIST.xml");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string strSelected = trvCategory.SelectedNode.Text.ToString();
            if (strSelected == "4Cs" || strSelected == "")
                return;

            //삭제할 Node 찾기
            XmlNode xnode = m_xmlCategory.SelectSingleNode("//CATEGORY_LIST//CATEGORY_NAME[.='" + strSelected + "']") ;
            
            //해당 node 삭제
            xnode.ParentNode.RemoveChild(xnode); 
            
            //XML 저장            
            m_xmlCategory.Save(Application.StartupPath + @"\xml_data\CATEGORY_LIST.xml");

        }

        private void trvCategory_AfterSelect(object sender, TreeViewEventArgs e)
        {
            textBox2.Text = trvCategory.SelectedNode.Text.ToString(); 
        }

C# XML 다루기 / C# How To Modify and Save XML in the .NET
http://all4cs.tistory.com - 두그미의 사는 이야기


Posted by 4Cs