XmlTextWriter 클래스를 이용한 XML파일 생성방법

.NET Framework에서는 XML을 쉽게 기록할 수 있도록 XmlTextWriter  클래스를 제공하고 있다. 이 XmlTextWriter 클래스는 속도가 빠르고, 캐시되지 않으며, 앞으로만 이동 가능한 방법을 제공한다.

아래는 XmlTextWriter 클래스를 사용한 예제이다.

XmlTextWriter 사용 예제

void IDataProcessor.SaveList(List<ProgramInfo> programList, string filePath)
{
 XmlTextWriter writer = new XmlTextWriter(filePath, null);

 // 자식요소에 따라 들여쓰기하기
 writer.Formatting = Formatting.Indented;

 writer.WriteStartDocument();

 writer.WriteComment("This file stores application version list");

 // <Programs>
 writer.WriteStartElement("Programs");

 for (int i = 0; i < programList.Count; i++)
 {
 // <Program>
 writer.WriteStartElement("Program");

 // <ID />
 writer.WriteElementString("ID", programList[i].ID);

 // <Name />
 writer.WriteElementString("Name", programList[i].Name);

 // <Contents />
 writer.WriteElementString("Contents", programList[i].Contents);

 // <RegistrationDate />
 writer.WriteElementString("RegistrationDate", programList[i].RegistrationDate.ToString());

 // <Versions>
 writer.WriteStartElement("Versions");

 for (int j = 0; j < programList[i].Versions.Count; j++)
 {
 // <Version>
 writer.WriteStartElement("Version");

 // <VersionNo />
 writer.WriteElementString("VersionNo", programList[i].Versions[j].VersionNo);

 // <RegistrationDate />
 writer.WriteElementString("RegistrationDate", programList[i].Versions[j].RegistrationDate.ToString());

 // <EditDate />
 writer.WriteElementString("EditDate", programList[i].Versions[j].EditDate.ToString());

 // <FolderPath />
 writer.WriteElementString("FolderPath", programList[i].Versions[j].FolderPath);

 // <Files>
 writer.WriteStartElement("Files");

 for (int k=0; k<programList[i].Versions[j].FileList.Count; k++)
 {
 // <File />
 writer.WriteElementString("File", programList[i].Versions[j].FileList[k]);
 }

 // </Files>
 writer.WriteEndElement();

 // </Version>
 writer.WriteEndElement();
 }

 // </Versions>
 writer.WriteEndElement();

 // </Program>
 writer.WriteEndElement();
 }

 // </Programs>
 writer.WriteEndElement();

 writer.Flush();
 writer.Close();
}

위의 형식대로 파일을 기록하게 되면 아래와 같은 구조의 XML 파일이 생성되게 된다.

생성된 XML 파일

<?xml version="1.0"?>
<!--This file stores application version list-->
<Programs>
  <Program>
    <ID>ZemnaAutoUpdater</ID>
    <Name>Zemna Auto Updater</Name>
    <Contents>하하하하하</Contents>
    <RegistrationDate>2009-02-27 오전 11:28:02</RegistrationDate>
    <Versions>
      <Version>
        <VersionNo>1.0.0</VersionNo>
        <RegistrationDate>2009-02-27 오전 11:28:02</RegistrationDate>
        <EditDate>2009-02-27 오전 11:28:02</EditDate>
        <FolderPath>cadfasd</FolderPath>
        <Files>
          <File>123.tx</File>
        </Files>
      </Version>
    </Versions>
  </Program>
</Programs>


Leave a Reply