기술 자료: 307548 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR307548
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 XmlTextReader클래스를 사용하여 확장 태그 언어(XML) 파일을 읽는 방법을 설명합니다. XmlTextReader를 직접 구문 분석하고 토큰화에서 World Wide Web 컨소시엄(W3C) XML 사양의 네임 스페이스 뿐만 아니라 XML을 구현하는 XML 1.0 사양을 제공합니다. 이 문서에서는 개체 모델 등의 XML 문서 개체 모델(DOM)을 사용하지 않고 토큰화된 고속 스트림 액세스를 제공합니다.

요구 사항

다음은 권장된 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩입니다.
  • Microsoft Visual Studio 2005 또는 Microsoft Visual Studio.NET
이 문서에서는 사용자가 다음 내용을 잘 알고 있다고 가정합니다.
  • XML 용어
  • 만들기 및 XML 파일 읽기

파일에서 XML을 읽는 방법

이 예제에서는 Books.xml 이라는 파일을 사용합니다. Books.xml 파일을 직접 만들거나 다음 폴더에 포함된 .NET 소프트웨어 개발 키트(SDK) 퀵 스타트에 있는 샘플 파일을 사용할 수 있습니다.
Visual Studio.NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs \Program Files\Microsoft
이 프로젝트를 만들 폴더 아래에 있는 \Bin\Debug 폴더에 Books.xml을 복사해야 합니다. Books.xml을 다운로드할 수 있습니다. 참고 해당 "참조"다운로드 위치에 대 한 섹션입니다.
  1. Visual Studio 2005 또는 Visual Studio.NET을 시작합니다.
  2. 새 Visual C# 콘솔 응용 프로그램을 만듭니다. 직접 진행 된 "전체 코드 목록"섹션 또는 응용 프로그램을 빌드하려면 다음이 단계를 계속 합니다.
  3. 프로젝트가 System.Xml.dll 어셈블리에 대한 참조를 포함하고 있는지 확인하십시오.
  4. 나중에 코드 XmlTextReader 선언을 한정하지 않아도 되도록 System.Xml 네임 스페이스에 using 지시문을 지정합니다. 다른 선언 전에 using 지시문을 사용해야 합니다.
    using System.Xml;
    					
  5. XmlTextReader 개체의 인스턴스를 만들고 XML 파일을 채웁니다. 일반적으로 XML DOM 오버 헤드 없이 원시 데이터로 액세스해야 할 경우 XmlTextReader 클래스가 사용됩니다. 따라서 XmlTextReader 클래스 XML을 읽는 빠른 메커니즘을 제공합니다. XmlTextReader 클래스는 XML 데이터의 위치를 지정하는 다른 생성자가 있습니다. 다음 코드는 XmlTextReader 클래스의 인스턴스를 만들고 Books.xml 파일을 로드합니다. Class1의 Main 프로시저에 다음 코드를 추가 합니다.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. XML을 읽습니다. (이 단계는 외부 "while" 루프를 보여주고 다음 두 단계 루프를 사용하여 XML을 읽는 방법을 보여줍니다.) XmlTextReader 개체를 만든 후 Read 메서드를 사용하여 XML 데이터를 읽습니다. Read 메서드를 계속해서 이 파일의 끝에 도달할 때까지 순차적으로 XML 파일을 옮기려면 반환 값이 "False"를 선택합니다.
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. 노드를 검사 합니다. XML 데이터를 처리하려면 각 레코드는 NodeType 속성에서 결정할 수 있는 노드 형식이 있습니다. 속성 이름 의 노드 이름 (요소와 특성 이름) 및 현재 노드 (또는 레코드)의 노드 값 (노드 텍스트)을 반환합니다. NodeType 열거형은 노드 형식을 결정합니다. 다음 샘플 코드 요소 이름과 문서 종류를 표시합니다. 이 샘플은 요소 특성이 무시되는 것을 참고합니다.
    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 the end of the element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    					
  8. 특성을 검사 합니다. 요소 노드 형식에 관련 된 특성 노드 목록이 포함 될 수 있습니다. MovetoNextAttribute 메서드는 순차적으로 각 요소의 특성을 통해 이동합니다. HasAttributes 속성을 사용 하는 노드에 특성이 있는지 여부를 테스트 합니다. AttributeCount 속성은 현재 노드의 특성 수를 반환합니다.
    while (reader.Read()) 
    {
           switch (reader.NodeType) 
           {
               case XmlNodeType.Element: // The node is an element.
                   Console.Write("<" + reader.Name);
    
                   while (reader.MoveToNextAttribute()) // Read the attributes.
                       Console.Write(" " + reader.Name + "='" + reader.Value + "'");
          Console.WriteLine(">");
                   break;
         case XmlNodeType.Text: //Display the text in each element.
                   Console.WriteLine (reader.Value);
                   break;
         case XmlNodeType. EndElement: //Display the end of the element.
                   Console.Write("</" + reader.Name);
          Console.WriteLine(">");
                   break;
           }
       }
    					
  9. 저장하고 프로젝트를 닫습니다.

전체 코드 목록

using System;
using System.Xml;

namespace ReadXMLfromFile
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader reader = new XmlTextReader ("books.xml");
            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 the end of the element.
                        Console.Write("</" + reader.Name);
                        Console.WriteLine(">");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
}
				

샘플 출력

<bookstore>
<book>
<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>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
				

문제 해결

코드를 테스트 하는 경우에 다음과 같은 예외 오류 메시지가 나타날 수 있습니다: 처리 되지 않은 예외: System.Xml.XmlException: 예기치 않은 XML 선언 합니다. 문서에서 첫 번째 노드 XML 선언 및 공백 문자가 앞에 나타날 수 있습니다.

추가 정보: 시스템 오류. 예외 오류는 다음 코드 줄에서 발생 합니다: 반면
(reader.Read())
예외 오류는 잘못된 처리 명령에 의해 발생합니다. 예를 들어, 처리 명령에 관계 없는 공백을 포함할 수 있습니다. 다음은 잘못된 처리 명령의 예입니다.
<?xml version='1.0' ?>
이 xml 태그 앞 공간이 있는 '<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

참조

다음 파일은 Microsoft 다운로드 센터에서 다운로드 할 수 있습니다.
그림 축소그림 확대
다운로드
지금 Books.exe 패키지 다운로드
.NET Framework의 XML 클래스 및 C#에 대한 자세한 내용은 다음 Microsoft Developer Network(MSDN) 웹 사이트를 방문하십시오.
http://msdn.microsoft.com/en-us/magazine/cc302158.aspx
XmlReader 클래스에 대한 자세한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/system.xml.xmlreader (vs.71).aspx
XmlReader를 사용하여 XML 데이터를 읽는 방법에 대한 자세한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/aa720470 (VS.71).aspx

http://msdn2.microsoft.com/en-us/library/tfz3cz6w (vs.71).aspx

속성

기술 자료: 307548 - 마지막 검토: 2013년 6월 2일 일요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbdownload kbhowtomaster kbmt KB307548 KbMtko
기계 번역된 문서
이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.
이 문서의 영문 버전 보기:307548

피드백 보내기

 

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