반응형

* C# XML File Write & Read 예제...

 

메인 화면

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CSharp_XMLFile
{
    public partial class Form1 : Form
    {
        string strLocalFolder = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf('\\'));
        string strXmlFile = "\\XMLText.xml";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //파일이 존재 하면 삭제 하고 다시...
            if(System.IO.File.Exists(strLocalFolder + strXmlFile ))
            {
                System.IO.File.Delete(strLocalFolder + strXmlFile );
            }

            //XML Create
            System.Xml.XmlDocument xdDoc = new System.Xml.XmlDocument();
            System.Xml.XmlNode xnRoot = xdDoc.CreateElement("테스트");

            System.Xml.XmlNode xnTmp = xdDoc.CreateElement("XMLFileEx");
            xnTmp.InnerText = "XML Test";

            //상위 노드에 xnTmp 노드를 추가 테스트 -> XMLFileEx 관계
            xnRoot.AppendChild(xnTmp);

            //CheckBox 저장
            System.Xml.XmlNode xnCheckBox = xdDoc.CreateElement("ProgramCheckBox");
            System.Xml.XmlAttribute xaCheck1 = xdDoc.CreateAttribute("CheckBox1");
            System.Xml.XmlAttribute xaCheck2 = xdDoc.CreateAttribute("CheckBox2");
            System.Xml.XmlAttribute xaCheck3 = xdDoc.CreateAttribute("CheckBox3");

            xaCheck1.Value = checkBox1.Checked.ToString();
            xaCheck2.Value = checkBox2.Checked.ToString();
            xaCheck3.Value = checkBox3.Checked.ToString();

            //xnCheckBox 노드에 속성 추가
            xnCheckBox.Attributes.Append(xaCheck1);
            xnCheckBox.Attributes.Append(xaCheck2);
            xnCheckBox.Attributes.Append(xaCheck3);


            //라디오 버튼 저장
            System.Xml.XmlNode xnRadio = xdDoc.CreateElement("ProgramRadio");
            System.Xml.XmlAttribute xaRadio1 = xdDoc.CreateAttribute("Radio1");
            System.Xml.XmlAttribute xaRadio2 = xdDoc.CreateAttribute("Radio2");
            System.Xml.XmlAttribute xaRadio3 = xdDoc.CreateAttribute("Radio3");

            xaRadio1.Value = radioButton1.Checked.ToString();
            xaRadio2.Value = radioButton2.Checked.ToString();
            xaRadio3.Value = radioButton3.Checked.ToString();

            //XnRadio 노드에 속성 추가
            xnRadio.Attributes.Append(xaRadio1);
            xnRadio.Attributes.Append(xaRadio2);
            xnRadio.Attributes.Append(xaRadio3);
            

            xnRoot.AppendChild(xnRadio);
            xnRoot.AppendChild(xnCheckBox);

            //XML 저장
            xdDoc.AppendChild(xnRoot);
            xdDoc.Save(strLocalFolder + strXmlFile);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //XML Read

            //파일이 존재 하지 않으면...
            if (!System.IO.File.Exists(strLocalFolder + strXmlFile)) return;

            textBox1.Text = "";

            System.Xml.XmlDocument xdDoc = new System.Xml.XmlDocument();
            //XML 파일 로드...
            xdDoc.Load(strLocalFolder + strXmlFile);

            //테스트 노드 의 하위 노드들 읽기...
            foreach (System.Xml.XmlNode xn in xdDoc.ChildNodes )
            {
                textBox1.Text +="RootNode = " + xn.Name + System.Environment.NewLine ;
                textBox1.Text += "하위 노드"+ System.Environment.NewLine;
                //하위 노드... Root 노드에 대한
                foreach (System.Xml.XmlNode xx in xn)
                {
                    //XMLFileEx
                    //ProgramCheckBox
                    //ProgramRadio
                    if(xx.Name == "XMLFileEx")
                    {
                        textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine;
                        textBox1.Text += "           " + xx.InnerText  + System.Environment.NewLine;
                    }
                    else if (xx.Name == "ProgramCheckBox")
                    {
                        textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine;
                        textBox1.Text += "           CheckBox1 = " + xx.Attributes[0].Value.ToString() + System.Environment.NewLine;
                        textBox1.Text += "           CheckBox2 = " + xx.Attributes[1].Value.ToString() + System.Environment.NewLine;
                        textBox1.Text += "           CheckBox3 = " + xx.Attributes[2].Value.ToString() + System.Environment.NewLine;
                    }
                    else
                    {
                        textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine;
                        textBox1.Text += "           Radio1 = " + xx.Attributes[0].Value.ToString() + System.Environment.NewLine;
                        textBox1.Text += "           Radio2 = " + xx.Attributes[1].Value.ToString() + System.Environment.NewLine;
                        textBox1.Text += "           Radio3 = " + xx.Attributes[2].Value.ToString() + System.Environment.NewLine;
                    }

                }
            }

        }
    }
}

 

 

 

* 예제 결과

 

- 파일 저장 위치 및 파일 내용

파일 저장 위치

 

아래의 그림은 XML 파일 만들기 버튼 클릭 이후 메모장으로 XML 파일 열어본 결과

파일 내용
결과 화면

 

 

반응형

+ Recent posts