이번에는 간단한 예제를 통해 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(); } } }