반응형
* 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 파일 열어본 결과
반응형
'C# Programming' 카테고리의 다른 글
[C#] 다른 응용 프로그램 실행 및 종료 (0) | 2019.10.28 |
---|---|
[C#] File 사용 가능 여부 체크 (0) | 2019.10.25 |
[C#] 동적 DLL 폼 (From) 불러오기 또는 클래스 (Class) 함수 불러오기 예제 (0) | 2019.10.21 |
[C#] Folder Copy 폴더 복사 예제 (0) | 2019.10.18 |
[C#] File CheckSum 예제 (MD5 Checksum) (0) | 2019.10.16 |