본문 바로가기
.NET

C# DataSet 클래스의 ReadXml 함수로 XML 파싱하기

by leo21c 2024. 1. 5.

https://learn.microsoft.com/ko-kr/dotnet/api/system.data.dataset.readxml?view=net-8.0

 

DataSet.ReadXml 메서드 (System.Data)

XML 스키마와 데이터를 DataSet으로 읽어옵니다.

learn.microsoft.com

 

DataSet 클래스에 ReadXml 함수를 제공한다. 이 함수를 이용해서 XML을 파싱할 수 있다.

 

아래 샘플 XML 파일을 읽어 파싱하는 예제 함수를 만들었다.


<?xml version="1.0" encoding="utf-8"?>
<CONFIG>
	<INFO>
		<MODEL>Product</MODEL>
	</INFO>
	<DATA Type="Sample">
		<ITEM No="0" Desc="Test1" />
		<ITEM No="1" Desc="Test2" />
		<ITEM No="2" Desc="Test3" />
		<ITEM No="3" Desc="Test4" />
		<ITEM No="4" Desc="Test5" />
		<ITEM No="5" Desc="Test6" />
		<ITEM No="6" Desc="Test7" />
		<ITEM No="7" Desc="Test8" />
	</DATA>
</CONFIG>

위와 같은 XML을 파싱할 때 어떻게 DataSet 클래스를 이용하는지 아래 샘플 코드를 참고 한다.


public bool ParseXML(string fileName)
{
    System.Xml.XmlReader xmlFile;
    System.Data.DataSet dsXMLDataSet = new System.Data.DataSet();
    string BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;

    string fileParh = Path.Combine(BaseDirectory, fileName);
    if (System.IO.File.Exists(fileParh))
    {
        xmlFile = System.Xml.XmlReader.Create(fileParh, new System.Xml.XmlReaderSettings());
        dsXMLDataSet.ReadXml(xmlFile);

        //dsXMLDataSet.Tables[0] : <INFO>
        string model = dsXMLDataSet.Tables[0].Rows[0]["MODEL"].ToString();
        //dsXMLDataSet.Tables[1] : <DATA>
        string type = dsXMLDataSet.Tables[1].Rows[0]["Type"].ToString();
        //dsXMLDataSet.Tables[2] : <ITEM>        
        for (int i = 0; i < dsXMLDataSet.Tables[2].Rows.Count; i++)
        {
            string no = dsXMLDataSet.Tables[2].Rows[i]["No"].ToString();
            string desc = dsXMLDataSet.Tables[2].Rows[i]["Desc"].ToString();
        }
    }
    else
    {
        return false;
    }
    return true;
}