이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

XmlReader 클래스

 

게시 날짜: 2016년 11월

빠르고, 캐시되지 않으며 앞으로만 이동 가능한 XML 데이터 액세스를 제공하는 판독기를 나타냅니다.

이 유형에 대 한.NET Framework 소스 코드를 찾아보려면 참조는 Reference Source합니다.

네임스페이스:   System.Xml
어셈블리:  System.Xml(System.Xml.dll에 있음)


public abstract class XmlReader : IDisposable

이름설명
System_CAPS_protmethodXmlReader()

XmlReader 클래스의 새 인스턴스를 초기화합니다.

이름설명
System_CAPS_pubpropertyAttributeCount

파생 클래스에서 재정의되면 현재 노드에 포함된 특성 수를 가져옵니다.

System_CAPS_pubpropertyBaseURI

파생 클래스에서 재정의되면 현재 노드의 기본 URI를 가져옵니다.

System_CAPS_pubpropertyCanReadBinaryContent

XmlReader가 이진 콘텐츠 읽기 메서드를 구현하는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyCanReadValueChunk

XmlReaderReadValueChunk 메서드를 구현하는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyCanResolveEntity

이 판독기가 엔터티를 구문 분석하고 확인할 수 있는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyDepth

파생 클래스에서 재정의되면 XML 문서에서 현재 노드의 수준을 가져옵니다.

System_CAPS_pubpropertyEOF

파생 클래스에서 재정의되면 판독기가 스트림의 끝에 배치되었는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyHasAttributes

현재 노드에 특성이 있는지를 나타내는 값을 얻습니다.

System_CAPS_pubpropertyHasValue

파생된 클래스에서 재정의 되 면 현재 노드가 가질 수 있는지 여부를 나타내는 값을 가져옵니다는 Value합니다.

System_CAPS_pubpropertyIsDefault

파생 클래스에서 재정의되면 현재 노드가 DTD나 스키마에서 정의한 기본값에서 생성된 값을 가진 특성인지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyIsEmptyElement

파생된 클래스에서 재정의 되 면 현재 노드가 빈 요소 인지 여부를 나타내는 값을 가져옵니다 (예를 들어 <MyElement/>).

System_CAPS_pubpropertyItem[Int32]

파생 클래스에서 재정의되면 지정된 인덱스가 있는 특성의 값을 가져옵니다.

System_CAPS_pubpropertyItem[String]

파생된 클래스에서 재정의 되 면 지정 된 특성의 값을 가져옵니다 Name합니다.

System_CAPS_pubpropertyItem[String, String]

파생된 클래스에서 재정의 되 면 지정 된 특성의 값을 가져옵니다 LocalNameNamespaceURI합니다.

System_CAPS_pubpropertyLocalName

파생 클래스에서 재정의되면 현재 노드의 로컬 이름을 가져옵니다.

System_CAPS_pubpropertyName

파생 클래스에서 재정의되면 현재 노드의 정규화된 이름을 가져옵니다.

System_CAPS_pubpropertyNamespaceURI

파생 클래스에서 재정의되면 판독기가 배치된 노드의 네임스페이스 URI를 W3C 네임스페이스 사양에 정의된 대로 가져옵니다.

System_CAPS_pubpropertyNameTable

파생된 클래스에서 재정의 되 면는 XmlNameTable 이 구현과 연관 됩니다.

System_CAPS_pubpropertyNodeType

파생 클래스에서 재정의되면 현재 노드의 형식을 가져옵니다.

System_CAPS_pubpropertyPrefix

파생 클래스에서 재정의되면 현재 노드와 관련된 네임스페이스 접두사를 가져옵니다.

System_CAPS_pubpropertyQuoteChar

파생 클래스에서 재정의되면 특성 노드의 값을 묶는 데 사용되는 따옴표 문자를 가져옵니다.

System_CAPS_pubpropertyReadState

파생 클래스에서 재정의되면 판독기의 상태를 가져옵니다.

System_CAPS_pubpropertySchemaInfo

스키마 유효성 검사의 결과로 현재 노드에 할당된 스키마 정보를 가져옵니다.

System_CAPS_pubpropertySettings

XmlReader 인스턴스를 만드는 데 사용되는 XmlReaderSettings 개체를 가져옵니다.

System_CAPS_pubpropertyValue

파생 클래스에서 재정의되면 현재 노드의 텍스트 값을 가져옵니다.

System_CAPS_pubpropertyValueType

현재 노드의 CLR(공용 언어 런타임) 형식을 가져옵니다.

System_CAPS_pubpropertyXmlLang

파생된 클래스에서 재정의 되 면 현재 가져옵니다 xml:lang 범위입니다.

System_CAPS_pubpropertyXmlSpace

파생된 클래스에서 재정의 되 면 현재 가져옵니다 xml:space 범위입니다.

이름설명
System_CAPS_pubmethodClose()

파생된 클래스에서 재정의 되 면 변경 된 ReadStateClosed합니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream)

기본 설정의 지정된 스트림을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings)

지정된 스트림 및 설정을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, String)

지정된 스트림, 기본 URI 및 설정을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, XmlParserContext)

구문 분석을 위해 지정한 스트림, 설정 및 컨텍스트 정보를 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String)

지정된 URI를 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings)

지정된 URI 및 설정을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings, XmlParserContext)

지정된 URI, 설정 및 컨텍스트 정보를 구문 분석에 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader)

지정된 텍스트 판독기를 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings)

지정된 텍스트 판독기 및 설정을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, String)

지정된 텍스트 판독기, 설정 및 기본 URI를 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, XmlParserContext)

지정된 텍스트 판독기, 설정 및 컨텍스트 정보를 구문 분석에 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodSystem_CAPS_staticCreate(XmlReader, XmlReaderSettings)

지정된 XML 판독기 및 설정을 사용하여 새 XmlReader 인스턴스를 만듭니다.

System_CAPS_pubmethodDispose()

XmlReader 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.

System_CAPS_protmethodDispose(Boolean)

XmlReader에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.

System_CAPS_pubmethodEquals(Object)

지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)

System_CAPS_protmethodFinalize()

개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)

System_CAPS_pubmethodGetAttribute(Int32)

파생 클래스에서 재정의되면 지정된 인덱스가 있는 특성의 값을 가져옵니다.

System_CAPS_pubmethodGetAttribute(String)

파생된 클래스에서 재정의 되 면 지정 된 특성의 값을 가져옵니다 Name합니다.

System_CAPS_pubmethodGetAttribute(String, String)

파생된 클래스에서 재정의 되 면 지정 된 특성의 값을 가져옵니다 LocalNameNamespaceURI합니다.

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다.(Object에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨)

System_CAPS_pubmethodGetValueAsync()

현재 노드의 값을 비동기적으로 가져옵니다.

System_CAPS_pubmethodSystem_CAPS_staticIsName(String)

문자열 인수가 유효한 XML 이름인지를 나타내는 값을 반환합니다.

System_CAPS_pubmethodSystem_CAPS_staticIsNameToken(String)

문자열 인수가 유효한 XML 이름 토큰인지를 나타내는 값을 반환합니다.

System_CAPS_pubmethodIsStartElement()

호출 MoveToContent 및 현재 콘텐츠 노드가 시작 태그 또는 빈 요소 태그 인지 테스트 합니다.

System_CAPS_pubmethodIsStartElement(String)

호출 MoveToContent 하 고 현재 콘텐츠 노드가 시작 태그 또는 빈 요소 태그와 경우 테스트는 Name 찾은 요소의 속성에 지정된 된 인수와 일치 합니다.

System_CAPS_pubmethodIsStartElement(String, String)

호출 MoveToContent 하 고 현재 콘텐츠 노드가 시작 태그 또는 빈 요소 태그와 경우 테스트는 LocalNameNamespaceURI 찾은 요소의 속성에 지정된 된 문자열 일치 합니다.

System_CAPS_pubmethodLookupNamespace(String)

파생 클래스에서 재정의되면 현재 요소의 범위에서 네임스페이스 접두사를 확인합니다.

System_CAPS_protmethodMemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.(Object에서 상속됨)

System_CAPS_pubmethodMoveToAttribute(Int32)

파생 클래스에서 재정의되면 지정된 인덱스가 있는 특성으로 이동합니다.

System_CAPS_pubmethodMoveToAttribute(String)

지정 된 특성으로 이동 하는 파생된 클래스에서 재정의 되 면 Name합니다.

System_CAPS_pubmethodMoveToAttribute(String, String)

지정 된 특성으로 이동 하는 파생된 클래스에서 재정의 되 면 LocalNameNamespaceURI합니다.

System_CAPS_pubmethodMoveToContent()

현재 노드가 콘텐츠 인지 확인 (공백이 아닌 텍스트 CDATA, Element, EndElement, EntityReference, 또는 EndEntity) 노드. 해당 노드가 콘텐츠 노드가 아니면 판독기는 다음 콘텐츠 노드나 파일의 끝으로 건너뜁니다. 판독기는 ProcessingInstruction, DocumentType, Comment, Whitespace 또는 SignificantWhitespace 같은 형식의 노드를 건너뜁니다.

System_CAPS_pubmethodMoveToContentAsync()

현재 노드가 콘텐츠 노드인지를 비동기적으로 확인합니다. 해당 노드가 콘텐츠 노드가 아니면 판독기는 다음 콘텐츠 노드나 파일의 끝으로 건너뜁니다.

System_CAPS_pubmethodMoveToElement()

파생 클래스에서 재정의되면 현재 특성 노드를 포함하는 요소로 이동합니다.

System_CAPS_pubmethodMoveToFirstAttribute()

파생 클래스에서 재정의되면 첫 번째 특성으로 이동합니다.

System_CAPS_pubmethodMoveToNextAttribute()

파생 클래스에서 재정의되면 다음 특성으로 이동합니다.

System_CAPS_pubmethodRead()

파생 클래스에서 재정의되면 스트림에서 다음 노드를 읽습니다.

System_CAPS_pubmethodReadAsync()

스트림에서 다음 노드를 비동기적으로 읽습니다.

System_CAPS_pubmethodReadAttributeValue()

파생된 클래스에서 재정의 되 면을 하나 이상의 특성 값을 구문 분석 Text, EntityReference, 또는 EndEntity 노드.

System_CAPS_pubmethodReadContentAs(Type, IXmlNamespaceResolver)

지정한 형식의 개체로 콘텐츠를 읽습니다.

System_CAPS_pubmethodReadContentAsAsync(Type, IXmlNamespaceResolver)

지정한 형식의 개체로 콘텐츠를 비동기적으로 읽습니다.

System_CAPS_pubmethodReadContentAsBase64(Byte[], Int32, Int32)

콘텐츠를 읽고 Base64 디코딩된 이진 바이트를 반환합니다.

System_CAPS_pubmethodReadContentAsBase64Async(Byte[], Int32, Int32)

콘텐츠를 비동기적으로 읽고 Base64 디코딩된 이진 바이트를 반환합니다.

System_CAPS_pubmethodReadContentAsBinHex(Byte[], Int32, Int32)

콘텐츠를 읽고 BinHex 디코딩된 이진 바이트를 반환합니다.

System_CAPS_pubmethodReadContentAsBinHexAsync(Byte[], Int32, Int32)

비동기적으로 콘텐츠를 읽고 반환 된 BinHex 디코딩된 이진 바이트입니다.

System_CAPS_pubmethodReadContentAsBoolean()

현재 위치의 텍스트 콘텐츠는 Boolean합니다.

System_CAPS_pubmethodReadContentAsDateTime()

현재 위치의 텍스트 콘텐츠는 DateTime 개체입니다.

System_CAPS_pubmethodReadContentAsDateTimeOffset()

현재 위치의 텍스트 콘텐츠는 DateTimeOffset 개체입니다.

System_CAPS_pubmethodReadContentAsDecimal()

현재 위치의 텍스트 콘텐츠는 Decimal 개체입니다.

System_CAPS_pubmethodReadContentAsDouble()

현재 위치의 텍스트 콘텐츠를 배정밀도 부동 소수점 숫자로 읽습니다.

System_CAPS_pubmethodReadContentAsFloat()

현재 위치의 텍스트 콘텐츠를 단정밀도 부동 소수점 숫자로 읽습니다.

System_CAPS_pubmethodReadContentAsInt()

현재 위치의 텍스트 콘텐츠를 부호 있는 32비트 정수로 읽습니다.

System_CAPS_pubmethodReadContentAsLong()

현재 위치의 텍스트 콘텐츠를 부호 있는 64비트 정수로 읽습니다.

System_CAPS_pubmethodReadContentAsObject()

현재 위치의 텍스트 콘텐츠는 Object합니다.

System_CAPS_pubmethodReadContentAsObjectAsync()

현재 위치의 텍스트 콘텐츠를 비동기적으로 읽습니다는 Object합니다.

System_CAPS_pubmethodReadContentAsString()

현재 위치의 텍스트 콘텐츠는 String 개체입니다.

System_CAPS_pubmethodReadContentAsStringAsync()

현재 위치의 텍스트 콘텐츠를 비동기적으로 읽습니다는 String 개체입니다.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver)

요소 콘텐츠를 요청된 형식으로 읽습니다.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

지정된 로컬 이름과 네임스페이스 URI가 현재 요소의 로컬 이름 및 네임스페이스 URI와 일치하는지 확인한 다음 요소 콘텐츠를 요청된 형식으로 읽습니다.

System_CAPS_pubmethodReadElementContentAsAsync(Type, IXmlNamespaceResolver)

요소 콘텐츠를 요청된 형식으로 비동기적으로 읽습니다.

System_CAPS_pubmethodReadElementContentAsBase64(Byte[], Int32, Int32)

요소를 읽고 Base64 콘텐츠를 디코딩합니다.

System_CAPS_pubmethodReadElementContentAsBase64Async(Byte[], Int32, Int32)

요소를 비동기적으로 읽고 Base64 콘텐츠를 디코딩합니다.

System_CAPS_pubmethodReadElementContentAsBinHex(Byte[], Int32, Int32)

요소를 읽고 BinHex 콘텐츠를 디코딩합니다.

System_CAPS_pubmethodReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

비동기적으로 요소를 읽고 디코딩하는 BinHex 콘텐츠입니다.

System_CAPS_pubmethodReadElementContentAsBoolean()

현재 요소를 읽고 콘텐츠를 반환 된 Boolean 개체입니다.

System_CAPS_pubmethodReadElementContentAsBoolean(String, String)

확인 하는 지정 된 로컬 이름과 네임 스페이스 URI의 현재 요소 값과 일치, 다음 현재 요소를 읽고 콘텐츠를 반환 된 Boolean 개체입니다.

System_CAPS_pubmethodReadElementContentAsDateTime()

현재 요소를 읽고 콘텐츠를 반환 된 DateTime 개체입니다.

System_CAPS_pubmethodReadElementContentAsDateTime(String, String)

확인 하는 지정 된 로컬 이름과 네임 스페이스 URI의 현재 요소 값과 일치, 다음 현재 요소를 읽고 콘텐츠를 반환 된 DateTime 개체입니다.

System_CAPS_pubmethodReadElementContentAsDecimal()

현재 요소를 읽고 콘텐츠를 반환 된 Decimal 개체입니다.

System_CAPS_pubmethodReadElementContentAsDecimal(String, String)

확인 하는 지정 된 로컬 이름과 네임 스페이스 URI의 현재 요소 값과 일치, 다음 현재 요소를 읽고 콘텐츠를 반환 된 Decimal 개체입니다.

System_CAPS_pubmethodReadElementContentAsDouble()

현재 요소를 읽고 콘텐츠를 배정밀도 부동 소수점 숫자로 반환합니다.

System_CAPS_pubmethodReadElementContentAsDouble(String, String)

지정된 로컬 이름과 네임스페이스 URI가 현재 요소의 로컬 이름 및 네임스페이스 URI와 일치하는지 확인한 다음 현재 요소를 읽고 콘텐츠를 배정밀도 부동 소수점 숫자로 반환합니다.

System_CAPS_pubmethodReadElementContentAsFloat()

현재 요소를 읽고 콘텐츠를 단정밀도 부동 소수점 숫자로 반환합니다.

System_CAPS_pubmethodReadElementContentAsFloat(String, String)

지정된 로컬 이름과 네임스페이스 URI가 현재 요소의 로컬 이름 및 네임스페이스 URI와 일치하는지 확인한 다음 현재 요소를 읽고 콘텐츠를 단정밀도 부동 소수점 숫자로 반환합니다.

System_CAPS_pubmethodReadElementContentAsInt()

현재 요소를 읽고 부호 있는 32비트 정수로 콘텐츠를 반환합니다.

System_CAPS_pubmethodReadElementContentAsInt(String, String)

지정된 로컬 이름과 네임스페이스 URI가 현재 요소의 로컬 이름 및 네임스페이스 URI와 일치하는지 확인한 다음 현재 요소를 읽고 콘텐츠를 부호 있는 32비트 정수로 반환합니다.

System_CAPS_pubmethodReadElementContentAsLong()

현재 요소를 읽고 부호 있는 64비트 정수로 콘텐츠를 반환합니다.

System_CAPS_pubmethodReadElementContentAsLong(String, String)

지정된 로컬 이름과 네임스페이스 URI가 현재 요소의 로컬 이름 및 네임스페이스 URI와 일치하는지 확인한 다음 현재 요소를 읽고 콘텐츠를 부호 있는 64비트 정수로 반환합니다.

System_CAPS_pubmethodReadElementContentAsObject()

현재 요소를 읽고 콘텐츠를 반환 된 Object합니다.

System_CAPS_pubmethodReadElementContentAsObject(String, String)

확인 하는 지정 된 로컬 이름과 네임 스페이스 URI의 현재 요소 값과 일치, 다음 현재 요소를 읽고 콘텐츠를 반환 된 Object합니다.

System_CAPS_pubmethodReadElementContentAsObjectAsync()

비동기적으로 현재 요소를 읽고 콘텐츠를 반환 된 Object합니다.

System_CAPS_pubmethodReadElementContentAsString()

현재 요소를 읽고 콘텐츠를 반환 된 String 개체입니다.

System_CAPS_pubmethodReadElementContentAsString(String, String)

확인 하는 지정 된 로컬 이름과 네임 스페이스 URI의 현재 요소 값과 일치, 다음 현재 요소를 읽고 콘텐츠를 반환 된 String 개체입니다.

System_CAPS_pubmethodReadElementContentAsStringAsync()

비동기적으로 현재 요소를 읽고 콘텐츠를 반환 된 String 개체입니다.

System_CAPS_pubmethodReadElementString()

텍스트 전용 요소를 읽습니다. 하지만 사용 하는 권장는 ReadElementContentAsString() 메서드 대신,이 작업을 처리 하는 더 간단한 방법을 제공 하기 때문에 있습니다.

System_CAPS_pubmethodReadElementString(String)

검사는 Name 찾은 요소의 속성 텍스트 전용 요소를 읽기 전에 지정된 된 문자열과 일치 합니다. 하지만 사용 하는 권장는 ReadElementContentAsString() 메서드 대신,이 작업을 처리 하는 더 간단한 방법을 제공 하기 때문에 있습니다.

System_CAPS_pubmethodReadElementString(String, String)

검사는 LocalNameNamespaceURI 요소의 속성을 찾을 텍스트 전용 요소를 읽기 전에 지정된 된 문자열과 일치 합니다. 하지만 사용 하는 권장는 ReadElementContentAsString(String, String) 메서드 대신,이 작업을 처리 하는 더 간단한 방법을 제공 하기 때문에 있습니다.

System_CAPS_pubmethodReadEndElement()

현재 콘텐츠 노드가 끝 태그인지 확인하고 판독기를 다음 노드로 이동합니다.

System_CAPS_pubmethodReadInnerXml()

파생 클래스에서 재정의되면 태그를 포함한 모든 콘텐츠를 문자열로 읽습니다.

System_CAPS_pubmethodReadInnerXmlAsync()

태그를 포함한 모든 콘텐츠를 문자열로 비동기적으로 읽습니다.

System_CAPS_pubmethodReadOuterXml()

파생 클래스에서 재정의되면 태그를 포함하여 이 노드 및 모든 자식 노드를 나타내는 콘텐츠를 읽습니다.

System_CAPS_pubmethodReadOuterXmlAsync()

이 노드 및 이 노드의 모든 자식을 나타내는 태그를 포함한 콘텐츠를 비동기적으로 읽습니다.

System_CAPS_pubmethodReadStartElement()

현재 노드가 요소인지 확인하고 판독기를 다음 노드로 진행합니다.

System_CAPS_pubmethodReadStartElement(String)

현재 콘텐츠 노드가 가진 요소 인지 검사는 주어진 Name 고 판독기를 다음 노드로 이동 합니다.

System_CAPS_pubmethodReadStartElement(String, String)

현재 콘텐츠 노드가 가진 요소 인지 검사는 주어진 LocalNameNamespaceURI 고 판독기를 다음 노드로 이동 합니다.

System_CAPS_pubmethodReadString()

파생 클래스에서 재정의되면 요소 또는 텍스트 노드의 내용을 문자열로 읽습니다. 하지만 사용 하는 권장는 ReadElementContentAsString 메서드 대신,이 작업을 처리 하는 더 간단한 방법을 제공 하기 때문에 있습니다.

System_CAPS_pubmethodReadSubtree()

새 반환 XmlReader 인스턴스를 현재 노드와 모든 하위 항목을 읽는 데 사용할 수 있습니다.

System_CAPS_pubmethodReadToDescendant(String)

이동 된 XmlReader 하는 다음 하위 요소로 지정된 된 정규화 된 이름 가진 합니다.

System_CAPS_pubmethodReadToDescendant(String, String)

이동은 XmlReader 하는 다음 하위 요소로 지정 된 로컬 이름 및 네임 스페이스 URI입니다.

System_CAPS_pubmethodReadToFollowing(String)

지정된 정규화된 이름의 요소를 찾을 때까지 읽습니다.

System_CAPS_pubmethodReadToFollowing(String, String)

지정된 로컬 이름 및 네임스페이스 URI를 사용하는 요소를 찾을 때까지 읽습니다.

System_CAPS_pubmethodReadToNextSibling(String)

앞으로 이동 된 XmlReader 지정 된 정규화 된 이름의 다음 형제 요소로 합니다.

System_CAPS_pubmethodReadToNextSibling(String, String)

지정된 로컬 이름과 네임스페이스 URI를 사용하는 다음 형제 요소로 XmlReader를 이동합니다.

System_CAPS_pubmethodReadValueChunk(Char[], Int32, Int32)

XML 문서에 포함된 큰 텍스트 스트림을 읽습니다.

System_CAPS_pubmethodReadValueChunkAsync(Char[], Int32, Int32)

XML 문서에 포함된 큰 텍스트 스트림을 비동기적으로 읽습니다.

System_CAPS_pubmethodResolveEntity()

파생된 클래스에서 재정의 되 면이 대 한 엔터티 참조를 확인 EntityReference 노드.

System_CAPS_pubmethodSkip()

현재 노드의 자식을 건너뜁니다.

System_CAPS_pubmethodSkipAsync()

현재 노드의 자식을 비동기적으로 건너뜁니다.

System_CAPS_pubmethodToString()

현재 개체를 나타내는 문자열을 반환합니다.(Object에서 상속됨)

System_CAPS_note참고

이 유형에 대 한.NET Framework 소스 코드를 보려면 참조는 Reference Source합니다. 온라인 소스 코드, 오프 라인으로 보기에 대 한 참조를 다운로드 및 디버깅 하는 동안 소스 (패치 및 업데이트 포함)를 단계별로 실행 합니다. see instructions.

XmlReader adocument 나 스트림에 XML 데이터에 대 한 정방향 전용, 읽기 전용 액세스를 제공합니다. 이 클래스는 W3C에 맞는 Extensible Markup Language (XML) 1.0 (fourth edition)Namespaces in XML 1.0 (third edition) 권장 합니다.

XmlReader메서드를 통해 XML 데이터를 탐색 하 고 노드의 내용을 읽을 수 있습니다. 클래스의 속성이 판독기의 위치는 현재 노드의 값을 반영 합니다. ReadState 속성 값은 XML 판독기의 현재 상태를 나타냅니다. 예를 들어는 속성 Initial 으로 XmlReader.Read 메서드 및 Closed 으로 XmlReader.Close 메서드. XmlReader 또한 데이터 규칙 검사 및 DTD 또는 스키마에 대해 유효성 검사를 제공합니다.

XmlReader끌어오기 모델을 사용 하 여 데이터를 검색 합니다. 이 모델:

  • 자연 스러운, 하향 프로시저 방식을 상태 관리를 간소화합니다.

  • 여러 입력된 스트림 및 계층화를 지원합니다.

  • 넣을 문자열 바로 기록 되 고 따라서 추가 문자열 복사의 필요성을 방지 하는 버퍼를 파서에 제공할 수 있습니다.

  • 선택적 처리를 지원 합니다. 클라이언트 항목을 건너뛰고 응용 프로그램에 관련 된 것을 처리 하십시오. 또한 (예: 표준화) XML 스트림이 처리 되는 방식을 관리 하는 사전에 속성을 설정할 수 있습니다.

섹션 내용

XML 판독기 만들기
XML 데이터 유효성 검사
데이터 규칙
노드를 탐색
읽을 XML 요소
읽을 XML 특성
읽을 XML 콘텐츠
CLR 형식으로 변환
비동기 프로그래밍
보안 고려 사항

사용 하는 Create 만드는 메서드를 한 XmlReader인스턴스.

.NET Framework의 구체적인 구현을 제공 하지만 XmlReader 클래스 등의 XmlTextReader, XmlNodeReader, 및 XmlValidatingReader 클래스인 것이 좋습니다 특수화 클래스를 사용 하 여 이러한 시나리오에만:

  • readan XML DOM 하위 트리를 하려는 경우는 XmlNode 개체를 사용 하 여는 XmlNodeReader 클래스입니다. 그러나 (이 클래스 하지 DTD 또는 스키마 유효성 검사를 지원 합니다.)

  • 요청 시 엔터티를 확장 해야, 원하지 않는 텍스트 콘텐츠 정규화 또는 기본 반환 하는 특성을 사용 하 여 원하지 않는 경우는 XmlTextReader 클래스입니다.

전달 된 XML 판독기에서 사용 하도록 설정 하려는 기능 집합을 지정 하려면는 System.Xml.XmlReaderSettings 개체는 Create 메서드. 단일을 사용할 수 있습니다 System.Xml.XmlReaderSettings 수정 또는 같은 기능을 갖춘 여러 판독기를 만들 개체는 System.Xml.XmlReaderSettings다른 기능 집합이 포함 된 새 판독기를 만들 개체입니다. 또한 기존 판독기에 기능을 추가할 수 있습니다.

사용 하지 않는 경우는System.Xml.XmlReaderSettings개체를 기본 설정이 사용 됩니다. 참조는 Create 대 한 자세한 내용은 참조 페이지입니다.

XmlReader throw는 XmlException xml 구문 분석 오류입니다. 예외가 throw 되 면 판독기의 상태 예측 가능한있지 않습니다. 예를 들어 보고 된 노드 형식은 현재 노드의 실제 노드 형식과 다를 수 있습니다. 사용 된 ReadState 판독기가 오류 상태에 있는지 여부를 확인할 속성입니다.

XML 문서 요소 관계, 데이터 형식 및 내용 제약 조건의 구조를 정의 하려면 문서 형식 정의 (DTD) 또는 XML 스키마 정의 언어 (XSD) 스키마를 사용 합니다. XML 문서에 정의 된 한 모든 구문 요구 사항을 충족 하는 경우 올바르게 구성 되어야으로 간주 됩니다는 W3C XML 1.0 Recommendation합니다. 제대로 구성 하 고 DTD 나 스키마에 정의 된 제약 조건에도 부합 하는 경우 유효한 간주 됩니다. (참조는 W3C XML Schema Part 1: StructuresW3C XML Schema Part 2: Datatypes권장 사항입니다.) 그러므로 유효한 모든 XML 문서가 제대로 구성되었더라도 제대로 구성된 XML 문서가 모두 유효한 것은 아닙니다.

에 저장 된 XSD 스키마 또는 DTD 인라인 XSD 스키마에 대해 데이터 유효성을 검사할 수는 XmlSchemaSet 개체 (캐시), 이러한 시나리오에 설명 되어는 Create 참조 페이지입니다. XmlReader Xml-data Reduced (XDR) 스키마 유효성 검사를 지원 하지 않습니다.

다음 설정을 사용는 XmlReaderSettings 있는 경우 유효성 검사의 유형을 지정 하는 클래스는XmlReader 인스턴스를 지원 합니다.

이 사용 하 여 XmlReaderSettings 멤버

지정할 함수

DtdProcessing 속성

DTD 처리를 허용할지 여부를 나타냅니다. 기본값은 DTD 처리를 허용하지 않는 것입니다.

ValidationType 속성

판독기 데이터의 유효성을 검사 해야 하는지 여부와 어떤 유형의 (DTD 또는 스키마)를 수행할 유효성 검사. 기본값은 데이터 유효성 검사를 수행하지 않는 것입니다.

ValidationEventHandler 이벤트

유효성 검사 이벤트에 대 한 정보를 수신 하기 위한 이벤트 처리기입니다. 이벤트 처리기를 지정하지 않으면 첫 번째 유효성 검사 오류에서 XmlException이 throw됩니다.

ValidationFlags 속성

통해 추가 유효성 검사 옵션은 XmlSchemaValidationFlags 열거형 멤버:

  • AllowXmlAttributes--XML 특성을 허용 하는 중 (xml:*) 하지 스키마에 정의 하는 경우에 인스턴스 문서에 있습니다. 특성의 데이터 형식에 따라 유효성이 검사 됩니다. 참조는 XmlSchemaValidationFlags 참조 페이지에 특정 시나리오에서 사용 하도록 설정 합니다. (기본적으로 비활성화 합니다.)

  • ProcessIdentityConstraints -Identity 제약 조건 처리 (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) 유효성 검사 중 발생 합니다. (기본적으로 사용 합니다.)

  • ProcessSchemaLocation --지정 된 스키마를 처리 하는 중 고 xsi:schemaLocation 또는 xsi:noNamespaceSchemaLocation 특성입니다. (기본적으로 사용 합니다.)

  • ProcessInlineSchema-유효성 검사 중 인라인 XML 스키마를 처리 합니다. (기본적으로 비활성화 합니다.)

  • ReportValidationWarnings-유효성 검사 경고가 발생 하는 경우 이벤트를 보고 합니다. 일반적으로 특정 요소나 특성을 유효성 검사하기 위한 DTD 또는 XML 스키마가 없을 경우 경고가 발생합니다. 알림에는 ValidationEventHandler가 사용됩니다. (기본적으로 비활성화 합니다.)

Schemas

유효성 검사에 사용할 XmlSchemaSet입니다.

XmlResolver 속성

XmlResolver확인 하 고 외부 리소스에 액세스 합니다. DTD 및 스키마와 같은 외부 엔터티에 포함할 수 있습니다 xs:include 또는 xs:import XML 스키마에 포함 된 요소입니다. 지정 하지 않으면는 XmlResolver, XmlReader 기본값을 사용 하 여 XmlUrlResolver 사용자 자격 증명 없이 합니다.

만든 XML 판독기는 Create methodmeet 기본적으로 다음 규정 준수 요구 사항:

  • 새 줄 및 특성 값은 W3C에 따라 정규화 됩니다 XML 1.0 Recommendation합니다.

  • 모든 엔터티를 자동으로 확장 됩니다.

  • 문서 형식 정의에 선언 된 기본 특성은 판독기의 유효성을 검사 하지 않습니다 하는 경우에 항상 추가 됩니다.

  • 올바른 XML 네임 스페이스 URI에 매핑되는 XML 접두사는 선언 허용 됩니다.

  • 단일에서 노테이션 이름 NotationType 특성 선언 및NmTokens 단일에서 Enumeration declarationare 고유 특성입니다.

이 사용 하 여 XmlReaderSettings 있습니다을 확인 하는 규칙의 형식을 지정 하는 속성을 사용 하도록 설정 하려면:

이 사용 하 여 XmlReaderSettings 속성

기본값

CheckCharacters 속성

설정 하거나 다음에 대 한 검사를 사용 하지 않도록 설정 합니다.

  • 에 정의 된 대로 문자는 유효한 XML 문자 범위 내에서 2.2 Characters 의 W3C XML 1.0 권장 사항 섹션입니다.

  • 모든 XML 이름이 올바른지에 정의 된 대로 2.3 Common Syntactic Constructs 의 W3C XML 1.0 권장 사항 섹션입니다.

이 속성 설정 된 경우 true (기본값)는 XmlException 잘못 된 문자 또는 잘못 된 XML 이름은 XML 파일에 포함 되어 있는 경우 예외가 throw 됩니다 (예를 들어, 요소 이름이 숫자로 시작)입니다.

문자 및 이름 확인이 사용 됩니다.

설정 CheckCharactersfalse 문자 문자 엔터티 참조에 대 한 검사를 해제 합니다. 판독기는 텍스트 데이터를 처리 하는 경우에 항상 XML 이름이이 설정에 관계 없이 유효한 지 확인 합니다.

System_CAPS_note참고

DTD가 있을 경우 XML 1.0 권장 사항에서는 문서 수준 규칙을 요구합니다. 따라서 판독기를 지원 하도록 구성 된 경우 ConformanceLevel.Fragment, 문서 종류 정의 (DTD)를 포함 하는 XML 데이터는 XmlException 이 throw 됩니다.

ConformanceLevel 속성

적용할 규칙 수준을 선택 합니다.

규칙을 데이터가 아닌 경우는 XmlException 예외가 throw 됩니다.

Document

현재 노드는 XML 판독기가 현재 배치 XML 노드입니다. 모든 XmlReader이 노드 및 모든 관련 하 여 작업을 수행 하는 방법을 XmlReader속성은 현재 노드의 값을 반영 합니다.

다음 방법을 쉽게 탐색 노드 하 고 데이터를 구문 분석 합니다.

이 사용 하 여 XmlReaderSettings 메서드

Read

첫 번째 노드를 읽고 스트림 한 노드를 통해 한 번에 앞으로 이동 합니다. 이러한 호출은 내 일반적으로 수행 되는 while 루프입니다.

사용 된 NodeType 현재 노드의 형식 (예를 들어, 특성, 주석, 요소, 그리고 등)을 가져올 속성입니다.

Skip

현재 노드의 자식을 건너뛰고 노드로 이동 합니다.

MoveToContentMoveToContentAsync

콘텐츠가 아닌 노드를 건너뜁니다. 하 고 내용 노드 또는 파일의 끝으로 이동 합니다.

비 콘텐츠 노드에 포함 ProcessingInstruction, DocumentType, Comment, Whitespace, 및 SignificantWhitespace합니다.

공백이 아닌 텍스트를 포함 하는 노드 내용 CDATA, EntityReference , 및EndEntity합니다.

ReadSubtree

요소 및 모든 자식을 읽고 반환 새 XmlReader 인스턴스 설정 ReadState.Initial합니다.

이 메서드는 XML 요소 주위에 경계를 만드는 데 유용한 예를 들어, 데이터 처리를 위해 다른 구성 요소를 전달 하 고 데이터의 양을 제한 하는 구성 요소 액세스할 수 있습니다.

참조는 XmlReader.Read 참조 페이지에 한 번에 텍스트 스트림 한 노드를 탐색 하 고 각 노드의 형식을 표시의 예입니다.

다음 섹션에서는 특정 유형의 요소, 특성 등의 데이터를 읽을 수는 방법에 대해 설명 하 고 형식화 된 데이터입니다.

다음 표에서 메서드 및 속성을 나열 하는 XmlReader 요소를 처리 하기 위한 클래스를 제공 합니다. XmlReader가 요소에 있는 경우 Name과 같은 노드 속성은 이 요소의 값을 반영합니다. 아래 설명된 멤버 외에도 XmlReader 클래스의 일반 메서드 및 속성을 사용하여 요소를 처리할 수 있습니다. 예를 들어, ReadInnerXml 메서드를 사용하여 요소 내용을 읽을 수 있습니다.

System_CAPS_note참고

3.1의 섹션을 참조는 W3C XML 1.0 Recommendation 에 대 한 정의 시작 태그, 태그 및 빈 요소 태그를 종료 합니다.

이 사용 하 여 XmlReader 멤버

IsStartElement 메서드

현재 노드가 시작 태그 또는 빈 요소 태그 인지 확인 합니다.

ReadStartElement 메서드

현재 노드가 요소 인지 확인 하 고 판독기를 다음 노드로 진행 (호출 IsStartElementRead).

ReadEndElement 메서드

현재 노드가 끝 태그 인지 확인 하 고 판독기를 다음 노드로 진행 합니다.

ReadElementString 메서드

텍스트 전용 요소를 읽습니다.

ReadToDescendant 메서드

지정된 된 이름을 가진 하는 다음 하위 항목 (자식) 요소에 XML 판독기를 진행 합니다.

ReadToNextSibling 메서드

지정된 된 이름을 가진 하는 다음 형제 요소에 XML 판독기를 진행 합니다.

IsEmptyElement 속성

현재 요소에 끝 요소 태그가 있는지 확인 합니다. 예:

요소의 텍스트 콘텐츠를 읽기의 예를 들어 참조는 ReadString 메서드. 다음 예제에서는 요소를 사용 하 여 처리 하는 while 루프입니다.

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
      Console.WriteLine("<{0}/>", reader.Name);
    else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  } 
} 

XML 특성은 가장 일반적으로 요소에 대해 찾았지만 XML 선언 및 문서 형식 노드에서도 군요.

요소 노드에 있을 경우는 MoveToAttribute 메서드를 사용 하면 요소의 특성 목록을 검토 합니다. 다음 사항에 유의 MoveToAttribute 가 호출 된 노드 속성와 같은 Name, NamespaceURI, 및 Prefix 특성 요소의 속성이 아니라 속한, 해당 특성의 속성을 반영 합니다.

XmlReader 클래스는 이러한 메서드와 읽고 요소 특성을 처리 하는 속성을 제공 합니다.

이 사용 하 여 XmlReader 멤버

HasAttributes 속성

현재 노드에 특성이 있는지 여부를 확인 합니다.

AttributeCount 속성

현재 요소에 특성의 수를 가져옵니다.

MoveToFirstAttribute 메서드

요소에서 첫 번째 특성으로 이동 합니다.

MoveToNextAttribute 메서드

요소에 다음 특성으로 이동 합니다.

MoveToAttribute 메서드

지정된 된 특성으로 이동 합니다.

GetAttribute 메서드 또는 Item 속성

지정된 된 특성의 값을 가져옵니다.

IsDefault 속성

현재 노드가 DTD 나 스키마에서 정의한 기본값에서 생성 된 특성 인지를 확인 합니다.

MoveToElement 메서드

현재 특성을 소유 하는 요소를 이동 합니다. 이 메서드를 사용 하 여 요소나 특성을 탐색 한 후 돌아갑니다.

ReadAttributeValue 메서드

하나 이상의 특성 값을 구문 분석 Text, EntityReference, 또는 EndEntity노드.

또한 일반 XmlReader 메서드 및 속성을 사용하여 특성을 처리할 수 있습니다. 예를 들어, 특성에 XmlReader를 배치한 후 NameValue 속성은 이 특성 값을 반영합니다. 내용 Read 메서드를 사용하여 특성 값을 얻을 수도 있습니다.

사용 하 여이 예제는 AttributeCount 요소의 모든 특성을 통해 탐색 하는 속성입니다.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement(); 
}

사용 하 여이 예제는 MoveToNextAttribute 에서 메서드는 while 루프를 탐색 하는 특성입니다.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}

XML 선언 노드에 특성 읽기

XML 선언 노드에 XML 판독기가 배치 하는 경우는 Value 속성은 버전, 독립 실행형 및 인코딩 정보를 단일 문자열로 반환 합니다. XmlReader 만든 개체는 Create 메서드를는 XmlTextReader 클래스 및 XmlValidatingReader버전, 독립 실행형 및 인코딩 항목을 특성으로 클래스를 노출 합니다.

문서 형식 노드에서도 특성 읽기

XML 판독기에서 문서 형식 노드를 가져갈 때 표시 되는 GetAttribute 메서드 및 Item SYSTEM 및 PUBLIC 리터럴에 대 한 값을 반환 하려면 속성을 사용할 수 있습니다. 예를 들어, reader.GetAttribute("PUBLIC")를 호출하면 PUBLIC 값이 반환됩니다.

처리 명령 노드 특성 읽기

처리 명령 노드에 XmlReader를 배치하면 Value 속성은 전체 텍스트 내용을 반환합니다. 처리 명령 노드의 항목을에서 특성으로 간주 되지 않습니다. 으로 읽을 수 없습니다는 GetAttribute 또는 MoveToAttribute 메서드.

XMLReader 클래스 콘텐츠 XML 파일에서 읽고 있는 문자열 값으로 콘텐츠는 반환 된 다음 멤버를 포함 합니다. (CLR 형식으로 되돌리려면 참조는 다음 섹션.)

이 사용 하 여 XmlReader 멤버

Value 속성

현재 노드의 텍스트 콘텐츠를 가져옵니다. 반환 되는 값은 노드 유형에 따라 달라 집니다. 참조는 Value 대 한 자세한 내용은 참조 페이지입니다.

ReadString 메서드

요소 또는 텍스트 노드의 내용을 문자열로 가져옵니다. 이 메서드는 명령 및 주석을 처리를 중지 합니다.

이 메서드가 특정 노드 형식을 처리 하는 방법에 대 한 세부 정보를 참조 하십시오.는 ReadString 참조 페이지입니다.

ReadInnerXmlReadInnerXmlAsync 메서드

현재 노드의 시작 및 끝 태그를 제외한 태그를 포함 한 모든 콘텐츠를 가져옵니다. 예:

<node>this<child id="123"/></node>

ReadInnerXml 반환합니다.

this<child id="123"/>

ReadOuterXmlReadOuterXmlAsync 메서드

현재 노드 및 태그와 시작/끝 태그를 포함 하 여 자식 노드의 모든 콘텐츠를 가져옵니다. 예:

<node>this<child id="123"/></node>

ReadOuterXml 반환합니다.

<node>this<child id="123"/></node>

멤버를 사용할 수는 XmlReader 클래스 (다음 표에 나열 된) XML 데이터를 읽고 문자열 대신 런타임 (CLR) 형식으로 공용 언어 값을 반환 합니다. 이러한 멤버를 사용 하 여 값을 수동으로 구문 분석 하거나 문자열 값을 변환할 필요 없이 코딩 작업에 가장 적합 한 표현에서 얻을 수 있습니다.

  • ReadElementContentAs 메서드는 요소 노드 형식 에서만 호출할 수 있습니다. 자식 요소 또는 혼합 내용이 포함된 요소에서는 사용할 수 없습니다. 호출할 경우 XmlReader 개체는 시작 태그를 읽고 요소 내용을 읽은 다음 끝 요소 태그를 지나서 이동합니다. 처리 명령과 주석은 무시되며 엔터티는 확장됩니다.

  • ReadContentAs메서드는 현재 판독기 위치에서 텍스트 콘텐츠를 읽고 XML 데이터 스키마 또는 데이터 형식 관련 된 정보가 없는 경우 요청 된 반환 형식에서 텍스트 콘텐츠를 변환 합니다. 텍스트, 공백, 유효 공백 및 CDATA 섹션이 연결됩니다. 주석 및 처리 명령은 건너뛰고 엔터티 참조는 자동으로 확인 하 고

XmlReader 클래스에 정의 된 규칙을 사용 하 여는 W3C XML Schema Part 2: Datatypes권장 합니다.

이 사용 하 여 XmlReader메서드

이 CLR 형식을 반환 하려면

ReadContentAsBooleanReadElementContentAsBoolean

Boolean

ReadContentAsDateTimeReadElementContentAsDateTime

DateTime

ReadContentAsDoubleReadElementContentAsDouble

Double

ReadContentAsLongReadElementContentAsLong

Int64

ReadContentAsIntReadElementContentAsInt

Int32

ReadContentAsStringReadElementContentAsString

String

ReadContentAsReadElementContentAs

형식을 사용 하 여 지정 된 returnType 매개 변수

ReadContentAsObjectReadElementContentAsObject

에 지정 된 대로 가장 적합 한 형식에서 XmlReader.ValueType 속성입니다. 참조 System.Xml 클래스의 형식 지원 매핑 정보에 대 한 합니다.

쉽게 요소가 해당 형식으로 인해 CLR 형식으로 변환할 수 없는, 경우에 제대로 변환 하려면 스키마 매핑을 사용할 수 있습니다. 다음 예제에서는.xsd 파일을 사용 하 여 변환 하는 hire-date 요소를는 xs:date 유형 및 사용 하 여는 ReadElementContentAsDateTime 으로 요소를 반환 하는 메서드는 DateTime 개체입니다.

입력 (에서는 hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

스키마 (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

코드:

// Create a validating XmlReader object. The schema 
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}

출력:

Six Month Review Date:  7/8/2003 12:00:00 AM

대부분의 XmlReader 메서드 이름의 끝에 "Async"이 있는 비동기 해당 하는 방법입니다. 예를 들어 비동기 ReadContentAsObjectReadContentAsObjectAsync합니다.

다음 메서드는 비동기 메서드 호출으로 사용할 수 있습니다.

다음 섹션에서는 비동기 메서드인을 갖지 않는 메서드에 대 한 비동기 사용에 설명 합니다.

ReadStartElement 메서드

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}

ReadEndElement 메서드

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}

ReadToNextSibling 메서드

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);

    return false;
}

ReadToFollowing 메서드

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

ReadToDescendant 메서드

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

작업할 때는 다음 사항을 고려는 XmlReader 클래스:

  • throw 된 예외는 XmlReader 응용 프로그램에 버블링 하지 않을 경로 정보가 노출 될 수 있습니다. 응용 프로그램 예외를 catch 하 고 적절 하 게 처리 해야 합니다.

  • 서비스 거부 문제가 염려 하거나 신뢰할 수 없는 소스 처리 하는 경우 DTD 처리를 사용 하지 마십시오. 기본적으로 DTD 처리가 비활성화 됩니다 XmlReader 가 만든 개체는 Create 메서드.

    DTD 처리를 활성화하는 경우 XmlSecureResolver를 사용하여 XmlReader가 액세스할 수 있는 리소스를 제한할 수 있습니다. 또한 XML 처리에 필요한 메모리 및 시간을 제한할 수 있도록 앱을 디자인할 수 있습니다. 예를 들어 ASP.NET 응용 프로그램에서 시간 제한을 구성할 수 있습니다.

  • XML 데이터에는 스키마 파일과 같은 외부 리소스에 대한 참조가 포함될 수 있습니다. 기본적으로 사용 하 여 외부 리소스는 확인 된 XmlUrlResolver 사용자 자격 증명 없이 개체입니다. 이러한 경우 다음 중 하나를 수행하여 보안을 강화할 수 있습니다.

  • ProcessInlineSchemaProcessSchemaLocation 의 유효성 검사 플래그는 XmlReaderSettings 개체는 기본적으로 설정 되지 않습니다. 그러므로 신뢰할 수 없는 소스의 XML 데이터를 처리할 때 스키마 기반 공격으로부터 XmlReader를 보호할 수 있습니다. 이 플래그를 설정하면 XmlResolver 개체의 XmlReaderSettings를 사용하여 XmlReader에서 인스턴스 문서에 나타난 스키마 위치를 확인할 수 있습니다. 하는 경우는 XmlResolver 속성이 null, 해결 하지 스키마 위치 경우에는 ProcessInlineSchemaProcessSchemaLocation 유효성 검사 플래그를 설정 합니다.

    문서의 유효성을 검사하는 동안 스키마를 추가하면 새 형식이 추가되고 해당 문서에 대한 유효성 검사 결과가 달라질 수 있습니다. 결과적으로 외부 스키마는 신뢰할 수 있는 소스에서만 확인해야 합니다.

    사용 하지 않도록 설정 하는 것이 좋습니다는 ProcessIdentityConstraints 문서의 큰 부분을 통해 identity 제약 조건이 있는 스키마에 대해 가용성 우선 시나리오에서 트러스트 되지 않은, 큰 XML 문서 유효성을 검사할 때 플래그를 지정 합니다. 이 플래그는 기본적으로 사용 됩니다.

  • XML 데이터에는 처리하는 데 시간이 많이 걸리는 수많은 특성, 네임스페이스 선언, 중첩된 요소 등이 포함될 수 있습니다. 에 전송 되는 입력의 크기를 제한 하는 XmlReader, 를 할 수 있습니다.

    • 설정 하 여 문서 크기를 제한 하는 MaxCharactersInDocument 속성입니다.

    • 설정 하 여 확장 엔터티의 결과인 문자 수를 제한 된 MaxCharactersFromEntities 속성입니다.

    • 사용자 지정 만들기 IStream 에 대 한 구현을 XmlReader합니다.

  • ReadValueChunk 메서드 대규모 데이터 스트림을 처리 하는 것입니다. 이 메서드는 전체 값에 대한 단일 문자열을 할당하는 대신 한 번에 적은 수의 문자를 읽습니다.

  • 많은 고유 로컬 이름, 네임 스페이스 또는 접두사를 포함 하는 XML 문서를 읽을 때 문제가 발생할 수 있습니다. 파생 되는 클래스를 사용 하는 경우 XmlReader, 를 호출 하는 LocalName, Prefix, 또는 NamespaceURI 각 항목에 대 한 속성을 반환 된 문자열을 추가 NameTable합니다. 되는 컬렉션의 NameTable 줄 지 않아 문자열 핸들의 가상 메모리 누수 크기입니다. 이 대 한 하나의 완화는에서 파생 하는 NameTable 클래스 및 최대 크기 할당량을 적용 합니다. (사용 하지 않으려면 방법이 없기는 NameTable, 전환 하거나 하는 NameTable 가득 찼을 때). 위에서 설명한 속성을 사용 하지 않도록 하 고 대신 사용 하는 또 다른 해결 방법이 MoveToAttribute 메서드는 IsStartElement 메서드 이러한 메서드가 문자열을 반환 하지 채워지지 않습니다 되지 않도록 하 가능한 경우는 NameTable 컬렉션입니다.

  • XmlReaderSettings 개체에는 사용자 자격 증명과 같은 중요한 정보가 포함될 수 있습니다. 신뢰할 수 없는 구성 요소는 XmlReaderSettings 개체 및 해당 사용자 자격 증명을 사용하여 XmlReader 개체를 만들어 데이터를 읽을 수 있습니다. 캐시할 때 주의 해야 XmlReaderSettings 개체를 전달할 때 또는 XmlReaderSettings 구성 요소 간에 개체를 다른 개체입니다.

  • 신뢰할 수 없는 소스로부터 NameTable, XmlNamespaceManagerXmlResolver 개체 등의 지원 구성 요소를 받지 마십시오.

다음 예제 코드에서는 비동기 APIto 구문 분석 XML을 사용 하는 방법을 보여 줍니다.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: