이번에는 XML파일을 XmlTextReader 클래스를 이용하여 읽는 방법에 대해 살펴보도록 하자.
읽고자하는 XML 파일
위 파일을 읽는 코드는 아래와 같다.
XmlTextReader로 파일 읽기 샘플
List
{
// 데이터를 저장 할 변수 선언
List
int piIdx = 0; // Last ProgramInfo Index
int viIdx = 0; // Last VersionInfo Index
XmlTextReader reader = new XmlTextReader(filePath);
// 공백을 처리하지 않음
reader.WhitespaceHandling = WhitespaceHandling.None;
while (reader.Read())
{
reader.MoveToContent();
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "Program":
if (listPrg == null)
listPrg = new List();
ProgramInfo pi = new ProgramInfo();
listPrg.Add(pi);
piIdx = listPrg.Count - 1;
break;
case "ID":
listPrg[piIdx].ID = reader.ReadString();
break;
case "Name":
listPrg[piIdx].Name = reader.ReadString();
break;
case "Contents":
listPrg[piIdx].Contents = reader.ReadString();
break;
case "RegistrationDate":
if (reader.Depth == 2)
listPrg[piIdx].RegistrationDate = Convert.ToDateTime(reader.ReadString());
else
listPrg[piIdx].Versions[viIdx].RegistrationDate = Convert.ToDateTime(reader.ReadString());
break;
case "Version":
if (listPrg[piIdx].Versions == null)
listPrg[piIdx].Versions = new List();
VersionInfo vi = new VersionInfo();
listPrg[piIdx].Versions.Add(vi);
viIdx = listPrg[piIdx].Versions.Count - 1;
break;
case "VersionNo":
listPrg[piIdx].Versions[viIdx].VersionNo = reader.ReadString();
break;
case "EditDate":
listPrg[piIdx].Versions[viIdx].EditDate = Convert.ToDateTime(reader.ReadString());
break;
case "FolderPath":
listPrg[piIdx].Versions[viIdx].FolderPath = reader.ReadString();
break;
case "File":
if (listPrg[piIdx].Versions[viIdx].FileList == null)
listPrg[piIdx].Versions[viIdx].FileList = new List();
listPrg[piIdx].Versions[viIdx].FileList.Add(reader.ReadString());
break;
}
}
}
reader.Close();
return listPrg;
}