Visual C++ 사용 하 여 파일에서 XML 데이터를 읽는 방법

이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.

이 문서의 영문 버전 보기:815658
이 문서의 Microsoft Visual C#.NET 버전을 참조 하십시오. 307548.

이 문서의 Microsoft Visual Basic.NET 버전을 참조 하십시오. 301225.

이 문서에서는 다음 Microsoft.NET Framework 클래스 라이브러리 네임 스페이스:

System.xml

이 작업에서는

요약
파일에서 XML 데이터를 읽는 XmlTextReader 클래스를 사용 하는 방법을 설명 합니다. 구문 분석 한 XML 데이터 토큰화 XmlTextReader 클래스를 제공 합니다. XmlTextReader 클래스는 World Wide Web 컨소시엄 (W3C)에 의해 정의 된 XML 사양에 XML 1.0 사양에서 네임 스페이스 외에 구현 합니다. 이 여기서 빨리 수행 하는 방법을 설명, XML 문서 개체 모델 (DOM) 같은 개체 모델을 사용 하는 대신 XML 데이터에 대 한 스트림 액세스를 토큰화 합니다.

맨 위로

요구 사항

이 문서에서는 독자가 다음 항목에 익숙하다고 가정합니다:
  • XML 용어
  • 만드는 방법 및 XML 파일을 읽는 방법

다음은 권장된 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩입니다.
  • Microsoft Visual Studio.NET
  • Microsoft Visual Studio 2005
맨 위로

XML 데이터 파일에서 읽기

이 문서의 예제에서는 Books.xml 이라는 파일을 사용 합니다. 고유한 Books.xml 파일을 만들거나 Microsoft.NET 소프트웨어 개발 키트 (SDK) 퀵 스타트와 함께 제공 되는 샘플 파일을 사용할 수 있습니다. Books.xml 파일 다운로드는 Microsoft 다운로드 센터에서 제공 됩니다.프로젝트 폴더에 Books.xml 파일을 복사 해야 합니다.

파일에서 XML 데이터를 읽으려면 다음과 같이 하십시오.
  1. Visual Studio.NET 2002, Visual Studio 시작 합니다. NET2003, 또는 Visual Studio 2005.
  2. 파일 메뉴에서새로 만들기를 가리키고 프로젝트를 클릭 합니다.

    새 프로젝트 대화 상자가 나타납니다.
  3. 프로젝트 형식VisualC + + 프로젝트를 클릭 합니다.

    참고: Visual Studio 2005에서 Visual C++VisualC + + 프로젝트 변경 됩니다.
  4. Visual Studio 사용 하는 경우 템플릿Managed c + + 응용 프로그램 을 클릭 합니다. NET2002입니다.

    서식 파일Visual Studio.NET 2003을 사용 하는 경우 ConsoleApplication (.NET)을 클릭 합니다.

    서식 파일을 클릭 CLR ConsoleApplication<b00> </b00> Visual Studio 2005를 사용 하는 경우.
  5. 이름 상자에 입력Q815658를 선택한 다음 확인을 누릅니다.
  6. Theproject에서 System.xml.dll에 대 한 참조를 추가 합니다.관리 되는 Visual C++ 프로젝트에 대 한 참조를 추가 하는 방법에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 합니다.
    310674 방법: 관리 되는 Visual C++ 프로젝트에 참조를 추가 합니다.
  7. 사용 하 여 지정 합니다. 다음과 같이 System::Xml 네임 스페이스 지시문:
    using namespace System::Xml;
    이렇게 하면 코드에서 XmlTextReader 클래스 선언을 한 정하는 데 있지 않습니다. 사용 하 여 사용 해야 다른 선언 앞에 지시문.
  8. XmlTextReader 개체의 인스턴스를 만듭니다. .Xml 파일을 사용 하 여 XmlTextReader 개체를 채웁니다.

    Dom theoverhead 없이 원시 XML 데이터에 액세스 해야 하는 경우 XmlTextReader 클래스는 일반적으로 사용 따라서 XmlTextReader 클래스는 XML 데이터를 읽고 보다 빠르게를 제공 합니다. XmlTextReader 클래스에 도식 데이터의 위치를 지정 하는 다른 생성자입니다.

    다음 코드는 XmlTextReader 클래스의 인스턴스를 만들고 Books.xml 파일을 로드 합니다. _Tmain 함수 thefollowing 코드를 추가 합니다.
    XmlTextReader* reader = new XmlTextReader ("books.xml");
    참고: Visual C++ 2005에서 _tmain 함수 main 함수가 변경 됩니다.
  9. XML 데이터를 읽습니다.

    참고: 이 단계는 외부 동안 루프를 보여 줍니다. 이 단계를 수행 하는 두 개의 stepsthat XML 데이터를 읽는 while 루프를 사용 하는 방법을 보여 줍니다.

    XmlTextReader 개체 youcreate 후 Read 메서드를 사용 하 여 XML 데이터를 읽습니다.

    Read 메서드가.xml 파일 untilthe 읽기 메서드 경계에서 이동 된 순서 대로 파일의 끝을 계속 합니다. Read 메서드는 파일 끝에 도달 하면 Read 메서드는 false를 반환 합니다.
    while (reader->Read()){	// Do some work here on the data.	Console::WriteLine(reader->Name);}
  10. 노드를 검사 합니다.

    XML 데이터를 처리 하기 위해 eachrecord 형식이 노드 종류는 NodeType 속성에서 결정할 수 있습니다. Name 속성 및 Value 속성 현재 노드에 orfor 현재 레코드에 대 한 다음 정보를 반환합니다.
    • 가 요소 이름 및 특성 이름 노드 이름.
    • 노드 텍스트 노드 값입니다.
    NodeType 열거형 노드 유형을 결정합니다. 다음 codesample 요소 이름과 문서 종류를 표시합니다. 다음 코드는 샘플에는 요소 특성이 무시:
    while (reader->Read()){	switch (reader->NodeType)	{	case XmlNodeType::Element: // The node is an element.		Console::Write("<{0}", 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("</{0}", reader->Name);		Console::WriteLine(">");		break;	}}
  11. 특성을 검사 합니다.

    요소 노드 형식은 caninclude 요소 nodetypes와 관련 된 특성 노드 목록이 있습니다. MovetoNextAttribute 메서드는 요소의 각 특성을 통해 순차적으로 이동합니다. 노드에 특성이 있는지 여부를 테스트 하려면 HasAttributes 속성을 사용 합니다. AttributeCount 속성은 현재 노드의 특성 수를 반환합니다.
    while (reader->Read()){	switch (reader->NodeType)	{	case XmlNodeType::Element: // The node is an element.		Console::Write("<{0}", reader->Name);					while (reader->MoveToNextAttribute()) // Read the attributes.			Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);		Console::WriteLine(">");		break;	}}
  12. 솔루션을 저장 합니다. 솔루션을 빌드하십시오.
  13. 샘플 응용 프로그램을 실행 하려면 CTRL + f 5를 누릅니다.
맨 위로

전체 코드 샘플을 Visual Studio.NET 2002 또는 Visual Studio 봅니다. NET2003

#include "stdafx.h"#include <tchar.h>#using <mscorlib.dll>#using <System.xml.dll>	using namespace System;using namespace System::Xml;	void _tmain(void){    XmlTextReader* reader = new XmlTextReader ("books.xml");    while (reader->Read())     {        switch (reader->NodeType)         {			case XmlNodeType::Element: // The node is an element.				Console::Write("<{0}", reader->Name);                while (reader->MoveToNextAttribute()) // Read the attributes.					Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);				Console::WriteLine(">");                break;        }    }    Console::ReadLine();}
참고: 공용 언어 런타임 지원 컴파일러 옵션을 추가 해야 합니다 (/: oldsyntax) 성공적으로 이전 코드 샘플을 컴파일하려면 Visual C++ 2005에서. Visual C++ 2005에서는 공용 언어 런타임 지원 컴파일러 옵션을 추가 하려면 다음과이 같이 하십시오.
  1. 프로젝트를 클릭합니다 한 다음 클릭<ProjectName></ProjectName> 속성입니다.

    참고<ProjectName></ProjectName> 프로젝트의 이름 자리 표시자가입니다.
  2. 구성 속성확장 한 다음 일반을 클릭 합니다.
  3. 선택 공용 언어 런타임 지원, 이전 구문 (/: oldsyntax)공용 언어 런타임 지원 프로젝트 설정을 오른쪽 창에서 적용을 클릭 한 다음 확인을 클릭 합니다.
자세한 내용은 공용 언어 런타임 지원 컴파일러 옵션, 다음 Microsoft 웹 사이트를 방문 하십시오.
/clr (공용 언어 런타임 컴파일)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
이 단계는 문서 전체에 적용 됩니다.

맨 위로

샘플 출력 보기

참고: .NET SDK 퀵 스타트에 포함 되어 있는 Books.xml 파일이 마다 "XML 데이터 파일에서 읽기" 절에 나와 있는 다운로드 링크에서 Books.xml 파일에서 두 가지 차이가 있습니다.
  • 다운로드 링크에서 Books.xml 파일에publicationdate 특성이 없습니다.
  • 다운로드 링크에서 Books.xml 파일에 있는ISBN 특성이 없습니다.
<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>
맨 위로

문제 해결

샘플 응용 프로그램을 실행 하면 다음과 같은 오류 메시지가 나타날 수 있습니다.

System.Xml.XmlException 형식의 처리 되지 않은 예외가 System.xml.dll에서 발생 했습니다.
추가 정보: 시스템 오류.
"XML 데이터 파일에서 읽기" 절에 나와 있는 다운로드 링크에서 Books.xml 파일을 사용 하는 경우이 오류 메시지가 나타날 수 있습니다. 이 문제는 파일의 시작 부분에 공백을 Books.xml 파일 경우 발생할 수 있습니다. 이 문제를 해결 하려면 텍스트 편집기를 사용 하 여 Books.xml 파일을 열고 공백을 제거 합니다.

맨 위로
참조
XmlReader 사용 하 여 XML을 읽는 방법에 대 한 자세한 내용은 다음 Microsoft Developer Network (MSDN) 웹 사이트를 방문 하십시오.맨 위로
xml 파일 vcnet

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 815658 - 마지막 검토: 09/27/2015 13:44:00 - 수정: 5.0

Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbdownload kbcode kbxml kbhowtomaster kbmt KB815658 KbMtko
피드백