HOWTO: 스트림에서 XML 데이터 읽기

기술 자료 번역 기술 자료 번역
기술 자료: 301228 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR301228

본 문서에서는 Microsoft 제품의 베타 릴리스에 대해 설명합니다. 본 문서의 정보는 "있는 그대로" 제공되며 사전 통보 없이 변경될 수 있습니다.

이 베타 제품은 Microsoft의 공식 제품 지원 서비스를 받을 수 없습니다. 베타 릴리스 지원에 대한 자세한 내용은 베타 제품 파일에 포함된 설명서를 참조하거나 릴리스를 다운로드한 웹 사이트를 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 XmlTextReader 클래스를 사용하여 스트림에서 XML(Extensible Markup Language)을 읽는 방법을 설명합니다. 스트림은 서버, 파일 또는 TextReader 클래스의 바이트 스트림 같은 다양한 소스에서 가져올 수 있습니다.

요구 사항

다음은 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩 목록입니다.
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server 또는 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
이 문서는 사용자가 다음 항목에 대해 잘 알고 있는 것으로 가정합니다.
  • XML 용어
  • XML 만들기 및 읽기

스트림에서 XML 데이터를 읽는 방법

  1. Visual Studio .NET을 엽니다.
  2. 새로운 Microsoft VB(Visual Basic) 또는 Microsoft Visual C# 콘솔 응용 프로그램을 만듭니다.

    참고: 다음은 응용 프로그램을 빌드하는 방법에 대한 자세한 설명을 단계별로 제공합니다. 완성된 코드가 제공되는 10단계로 바로 이동할 수도 있습니다.
  3. 프로젝트에 System.XmlSystem.IO 네임스페이스에 대한 참조가 들어 있는지 확인합니다.
  4. Xml 네임스페이스에 Imports 문을 사용합니다. 그러면 나중에 코드에서 이 네임스페이스에 XmlTextReader 선언을 제한하지 않아도 됩니다. Imports 문은 다음과 같이 항상 선언 앞에 사용해야 합니다.
    Visual Basic .NET 코드
    Imports System.Xml
    Imports System.IO
    Visual C# 코드
    using System.Xml;
    using System.IO;
  5. XML 스트림을 만들거나 검색하여 가져옵니다. 스트림은 데이터(여기서는 XML 데이터)의 소스 또는 대상이 되는 입력 또는 출력 장치를 추상적으로 나타낸 것입니다. 스트림은 바이트의 흐름으로 가장 잘 시각화되며 스트림에 쓰고 스트림에서 읽을 수 있습니다.

    스트림은 장치 독립성을 제공하는 데 사용됩니다. 따라서 스트림의 소스가 변경되는 경우에도 프로그램을 변경할 필요가 없습니다. 여러 방법으로 XmlTextReader 클래스의 스트림을 만들 수 있습니다. 다음 코드 예제 중 하나를 선택하여 기본 모듈의 Main 프로시저에 추가합니다.
    • StringReader 개체를 사용하는 코드 예제

      StringReader 개체는 생성 중에 문자열에서 문자를 읽고 문자열 값을 받아들입니다.Visual Basic .NET 코드
      Dim stream as System.IO.StringReader
      stream = new StringReader("<?xml version='1.0'?>" & _
      "<!-- This file is a book store inventory. -->" & _
      "<bookstore>" & _
      " <book genre=""autobiography"" ISBN=""1-861003-11-0"">" & _
      "   <title>The Autobiography of Benjamin Franklin</title>" & _
      "   <author>" & _
      "       <first-name>Benjamin</first-name>" & _
      "       <last-name>Franklin</last-name>" & _
      "   </author>" & _
      "   <price>8.99</price>" & _
      " </book>" & _
      "</bookstore>")
      C# 코드
      StringReader stream;
      stream = new StringReader("<?xml version='1.0'?>" +
      	"<!-- This file represents a fragment of a book store inventory database. -->" +
      	"<bookstore>" +
      	" <book genre=\"autobiography\" publicationdate=\"1981\" ISBN=\"1-861003-11-0\">" +
      	"   <title>The Autobiography of Benjamin Franklin</title>" +
      	"   <author>" +
      	"       <first-name>Benjamin</first-name>" +
      	"       <last-name>Franklin</last-name>" +
      	"   </author>" +
      	"   <price>8.99</price>" +
      	" </book>" +
      	" <book genre=\"novel\" publicationdate=\"1967\" ISBN=\"0-201-63361-2\">" +
      	"   <title>The Confidence Man</title>" +
      	"   <author>" +
      	"       <first-name>Herman</first-name>" +
      	"       <last-name>Melville</last-name>" +
      	"   </author>" +
      	"   <price>11.99</price>" +
      	" </book>" +
      	"  <book genre=\"philosophy\" publicationdate=\"1991\" ISBN=\"1-861001-57-6\">" +
      	"   <title>The Gorgias</title>" +
      	"   <author>" +
      	"       <name>Plato</name>" +
      	"   </author>" +
      	"   <price>9.99</price>" +
      	" </book>" +
      	"</bookstore>");
    • StreamReader 개체를 사용하는 코드 예제

      StreamReader 개체는 파일에서 문자를 읽는 데 사용합니다. 이 개체는 생성 중에 읽혀질 파일 이름을 읽습니다.Visual Basic .NET 코드
      Dim stream as System.IO.StreamReader
      ' Loads the XML data in the file books.xml in a new stream.
      stream = New StreamReader ("books.xml")
      C# 코드
      System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
      여기서는 Books.xml 파일을 사용합니다. 고유한 Books.xml 파일을 만들 수도 있습니다. 예제 Books.xml 파일은 Visual Studio .Net과 .Net Framework SDK에도 포함되어 있습니다.

  6. 해당 스트림으로 XmlTextReader 클래스를 생성합니다. 일반적으로 XmlTextReader는 문서 개체 모델(DOM)의 오버헤드 없이 XML을 원시 데이터로 액세스해야 하는 경우에 사용됩니다. 따라서 XmlTextReader는 XML을 빠르게 읽을 수 있는 메커니즘을 제공합니다. XmlTextReader에는 XML 데이터의 위치를 지정하는 다른 생성자가 있습니다. 다음 코드는 스트림에서 XmlTextReader를 로드합니다.
    Visual Basic .NET 코드
    Dim reader As XmlTextReader = New XmlTextReader (stream)
    C# 코드
    XmlTextReader reader = null;	
    reader = new XmlTextReader (stream);
  7. XML을 통해 읽습니다. 로드된 XmlTextReader는 순차 읽기를 수행하여 XML 데이터 간을 이동하고 Read 메서드를 사용하여 다음 레코드를 가져옵니다. 가져올 레코드가 더 이상 없으면 False가 반환됩니다.
    Visual Basic .NET 코드
    Do While (reader.Read())
        ' Do some work here on the data.
        Console.WriteLine(reader.Name)
    Loop
    
    ' Reading of the XML file has finished.
    Console.ReadLine() 'Pause
    C# 코드
    while (reader.Read()) 
    {
        // Do some work here on the data.
        ...
    }
    
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
  8. 노드를 조사합니다. XML 데이터를 처리하기 위해 각 레코드마다 하나의 노드 종류를 갖는데, 이는 NodeType 속성에서 결정할 수 있습니다. NameValue 속성은 현재 노드(또는 레코드)의 노드 이름(요소 및 특성 이름)과 노드 값(노드 텍스트)을 반환합니다. NodeType 열거는 노드 종류를 결정합니다. 다음 코드 예제는 요소의 이름과 문서 종류를 표시합니다. 이 예제에서는 요소 특성이 무시됩니다.
    Visual Basic .NET 코드
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    C# 코드
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an Element.
                Console.Write("<" + reader.Name);
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display end of element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
  9. 특성을 조사합니다. 요소 노드 종류에는 관련된 특성 노드 목록이 포함될 수 있습니다. MovetoNextAttribute 메서드는 요소 내의 각 특성 간을 순차적으로 이동합니다. HasAttributes 속성을 사용하여 노드에 특성이 있는지 테스트합니다. AttributeCount 속성은 현재 노드의 특성 수를 반환합니다.
    Visual Basic .NET 코드
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
             If reader.HasAttributes Then 'If attributes exist
             	While reader.MoveToNextAttribute() 
    					'Display attribute name and value.
    Console.Write(" {0}='{1}'", reader.Name, reader.Value)
    End While
    End If
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    C# 코드
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an Element.
                Console.Write("<" + reader.Name);
    
                while (reader.MoveToNextAttribute()) // Read attributes.
                    Console.Write(" " + reader.Name + "='" + reader.Value + "'");
                Console.Write(">");
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display end of element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }

  10. 여기서는 편리한 작업을 위해 완성된 코드가 제공됩니다.
    Visual Basic .NET 코드
    Imports System.Xml
    Imports System.IO
    Module Module1
    
        Sub Main()
            Dim stream As System.IO.StreamReader
            ' Loads the XML data in the file books.xml in a new stream.
            stream = New StreamReader("books.xml")
            Dim reader As XmlTextReader = New XmlTextReader(stream)
            Do While (reader.Read())
                Select Case reader.NodeType
                    Case XmlNodeType.Element 'Display beginning of element.
                        Console.Write("<" + reader.Name)
                        If reader.HasAttributes Then 'If attributes exist
                            While reader.MoveToNextAttribute()
                                'Display attribute name and value.
                                Console.Write(" {0}='{1}'", reader.Name, reader.Value)
                            End While
                        End If
                        Console.WriteLine(">")
                    Case XmlNodeType.Text 'Display the text in each element.
                        Console.WriteLine(reader.Value)
                    Case XmlNodeType.EndElement 'Display end of element.
                        Console.Write("</" + reader.Name)
                        Console.WriteLine(">")
                End Select
            Loop
        End Sub
    
    End Module

    C# 코드
    using System;
    using System.Xml;
    using System.IO;
    namespace ReadXMLFromStream
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		static void Main(string[] args)
    		{
    
    			System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
    			XmlTextReader reader = null;	
    			reader = new XmlTextReader (stream);
    			while (reader.Read()) 
    			{
    				switch (reader.NodeType) 
    				{
    					case XmlNodeType.Element: // The node is an Element.
    						Console.Write("<" + reader.Name);
    
    						while (reader.MoveToNextAttribute()) // Read attributes.
    							Console.Write(" " + reader.Name + "='" + reader.Value + "'");
    						Console.Write(">");
    						Console.WriteLine(">");
    						break;
    					case XmlNodeType.Text: //Display the text in each element.
    						Console.WriteLine (reader.Value);
    						break;
    					case XmlNodeType. EndElement: //Display end of element.
    						Console.Write("</" + reader.Name);
    						Console.WriteLine(">");
    						break;
    				}
    			}
    
    		}
    	}
    }
    
  11. 프로젝트를 빌드하고 실행합니다.

참조

자세한 내용은 다음 Microsoft 웹 사이트의 MSDN Magazine에서 "XML in Microsoft .NET: .NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation" 문서를 참조하십시오.
http://msdn.microsoft.com/library/periodic/period01/xml0101.htm
XmlReader, StreamReaderStringReader 클래스에 대한 자세한 내용은 Microsoft .NET Framework Class Library 설명서를 참조하십시오.

XmlReader를 사용하여 XML 데이터를 읽는 방법에 대한 자세한 내용은 Microsoft .NET Framework Developer's Guide를 참조하십시오.

속성

기술 자료: 301228 - 마지막 검토: 2001년 11월 2일 금요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework Software Development Kit 1.0
키워드:?
kbhowto kbhowtomaster kbxml tslic_tslic KB301228
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com