[XML.NET] 14. XmlReader 개체 만들기 예제

 이번에는 간단한 예제를 통해 XmlReader 개체를 만드는 방법을 살펴봅시다. 먼저 12가지 Create 메서드 중에 4가지 방법을 사용하는 예를 보여드리고 난 후에 외부 데이터를 원본으로 XmlReader 개체를 생성하는 예제를 보여드릴게요. 그리고 마지막으로 XmlSchemaSet 개체를 이용하여 유효성 검사를 하는 예제를 보여드릴게요.

 먼저 예제에 사용할 원본 XML 파일인 “data.xml”의 내용을 살펴봅시다.

<?xml version="1.0" encoding="utf-8"?>
<!--XmlReader 개체 만들기-->
<books>
  <book>
    <title>XML.NET 과 ADO.NET</title>
    <가격>22000</가격>
  </book>
</books>

 다음의 예제 코드는 다양한 형태로 XmlReader 개체를 생성하여 입력 스트림의 내용을 XmlWriter 개체를 이용하여 콘솔 화면에 출력하는 소스입니다.

 여기에서는 네 가지 방법으로 XmlReader 개체를 생성하는 것을 보여주고 있습니다. 하나는 입력 스트림을 전달하여 XmlReader 개체를 생성하는 것이고 두 번째는 입력 스트림과 XmlReaderSettings 개체를 이용, 세 번째는 소스 파일의 uri를 문자열로 전달하여 생성, 네 번째는 소스 파일의 uri와XmlReaderSettings 개체를 이용하는 것입니다.

 참고로 예제에 사용한 XmlReaderSettings 개체는 주석을 무시하도록 설정하였습니다.

using System;
using System.IO;
using System.Xml;

namespace 예제_3._1_XmlReader_개체_만들기
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create(Stream input);
            Console.WriteLine("---------Start Test1--------");
            FileStream fs = new FileStream("data.xml", 
                FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);                        
            XmlReader reader1 = XmlReader.Create(fs);
            WirteConsole(reader1);            
            reader1.Close();
            fs.Close();
            Console.WriteLine("--------- End Test1 --------");

            //Create(Stream input, XmlReaderSettings settings);
            Console.WriteLine("---------Start Test2--------");
            fs = new FileStream("data.xml",
                FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true;
            XmlReader reader2 = XmlReader.Create(fs,settings);
            WirteConsole(reader2);
            reader2.Close();
            fs.Close();
            Console.WriteLine("--------- End Test2 --------");
            //Create(string uri);
            Console.WriteLine("---------Start Test3--------");                        
            settings.IgnoreComments = true;
            XmlReader reader3 = XmlReader.Create("data.xml");
            WirteConsole(reader3);
            reader3.Close();            
            Console.WriteLine("--------- End Test3 --------");
            //Create(string uri, XmlReaderSettings settings);
            Console.WriteLine("---------Start Test4--------");
            settings.IgnoreComments = true;
            XmlReader reader4 = XmlReader.Create("data.xml",settings);
            WirteConsole(reader4);
            reader4.Close();
            Console.WriteLine("--------- End Test4 --------");
        }

        private static void WirteConsole(XmlReader reader)
        {            
            XmlWriter xwriter = XmlWriter.Create(Console.Out);
            xwriter.WriteNode(reader, false);
            xwriter.Close();
            Console.WriteLine();
        }
    }
}
실행 화면