다음을 통해 공유


XmlReader.ReadValueChunk(Char[], Int32, Int32) 메서드

정의

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

public:
 virtual int ReadValueChunk(cli::array <char> ^ buffer, int index, int count);
public virtual int ReadValueChunk (char[] buffer, int index, int count);
abstract member ReadValueChunk : char[] * int * int -> int
override this.ReadValueChunk : char[] * int * int -> int
Public Overridable Function ReadValueChunk (buffer As Char(), index As Integer, count As Integer) As Integer

매개 변수

buffer
Char[]

텍스트 콘텐츠를 쓸 버퍼 역할을 하는 문자 배열입니다. 이 값은 null일 수 없습니다.

index
Int32

XmlReader가 버퍼 내에서 결과 복사를 시작할 수 있는 오프셋입니다.

count
Int32

버퍼에 복사할 최대 문자 수입니다. 이 메서드는 복사된 실제 문자 수를 반환합니다.

반환

Int32

버퍼로 읽어온 문자 수입니다. 텍스트 콘텐츠가 더 이상 없으면 0이 반환됩니다.

예외

현재 노드에 값이 없는 경우, 즉 HasValuefalse인 경우

또는

이전 비동기 작업이 완료되기 전에 XmlReader 메서드가 호출되었습니다. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.

buffer 값이 null입니다.

버퍼 내의 인덱스 또는 인덱스와 개수를 합한 값이 할당된 버퍼 크기보다 큰 경우

구현된 XmlReader에서 이 메서드를 지원하지 않는 경우

XML 데이터가 올바른 형식이 아닌 경우

설명

이 메서드를 사용하면 XML 문서에 포함된 매우 큰 텍스트 스트림을 스트리밍 방식으로 읽을 수 있습니다. 즉, 전체 값에 대해 단일 문자열을 할당하는 대신 한 번에 적은 수의 문자를 읽을 수 있습니다. 값이HasValue true있는 모든 노드에서 이 메서드를 호출할 수 있지만 노드 값의 실제 스트리밍은 텍스트, 공백 및 상당한 공백 노드에서 호출될 때만 발생합니다. 특성 및 CDATA 노드를 포함하여 다른 노드 형식 값이 캐시됩니다.

이 메서드는 속성의 Value 내용만 반환하고 .XmlReader

이 메서드는 노드 값의 지정된 문자 수(count)를 지정된 오프셋()의 문자 버퍼(buffer``index)로 읽고 버퍼에 기록된 문자 수를 반환합니다. 값의 0 끝에 도달했을 때를 반환합니다. 값을 다시 읽기 위해 다시 시작할 수 없습니다.

속성에 대한 ReadValueChunk XmlReader 호출 사이에는 속성 외에는 Value 변경되지 않습니다. 속성에 Value 액세스하면 부분 값(아직 반환되지 않은 문자 포함)을 반환하거나 구현에 따라 전체 값을 반환 ReadValueChunk할 수 있습니다. 네임스페이 XmlReader 스의 모든 구현은 System.Xml 속성 구현에 대한 Value 부분 값을 반환합니다.

모든 Read 메서드는 호출 간에 ReadValueChunk호출할 수 있습니다. 이 경우 스트림에서 XmlReader 다음 XmlNodeType 으로 이동하고 아직 반환되지 않은 문자는 건너뜁니다.

요청된 문자 수보다 적게 반환되는 경우가 ReadValueChunk 있을 수 있습니다. 예를 들어 위치 127과 128에서 서로게이트 쌍이 있는 200자 길이의 값이 있고 128자 버퍼를 사용하여 호출 ReadValueChunk 한 경우 메서드 호출은 요청된 128자 대신 127자를 반환합니다. 그러면 다음 호출에서 서로게이트 쌍이 ReadValueChunk 반환됩니다. 이 경우 ReadValueChunk 요청된 128자를 반환하지 않았습니다. 이렇게 하면 버퍼 끝에 불완전한 서로게이트 쌍이 발생했기 때문입니다.

이 메서드의 비동기 버전은 다음을 참조하세요 ReadValueChunkAsync.

적용 대상