XmlReader.ReadValueChunk(Char[], Int32, Int32) メソッド


XML ドキュメントに埋め込まれたテキストの大量のストリームを読み込みます。Reads large streams of text embedded in an XML document.

 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



テキストの内容が書き込まれるバッファーとして機能する文字の配列。The array of characters that serves as the buffer to which the text contents are written. この値を null にすることはできません。This value cannot be null.


XmlReader が結果のコピーを開始できる、バッファー内のオフセット。The offset within the buffer where the XmlReader can start to copy the results.


バッファーにコピーする最大文字数。The maximum number of characters to copy into the buffer. コピーされた実際の文字数は、このメソッドから返されます。The actual number of characters copied is returned from this method.



バッファー内へ読み取られた文字数。The number of characters read into the buffer. それ以上テキストの内容がない場合は、値として 0 が返されます。The value zero is returned when there is no more text content.


現在のノードに値がありません (HasValuefalse)。The current node does not have a value (HasValue is false).

- または --or- 先行の非同期操作が完了する前に、XmlReader メソッドが呼び出されました。An XmlReader method was called before a previous asynchronous operation finished. この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

buffer 値は null です。The buffer value is null.

バッファー内のインデックス、またはインデックスとカウントの合計値が、割り当てられているバッファー サイズを超えています。The index into the buffer, or index + count is larger than the allocated buffer size.

XmlReader 実装が、このメソッドをサポートしていません。The XmlReader implementation does not support this method.

XML データは、整形式ではありません。The XML data is not well-formed.


このメソッドを使用すると、XML ドキュメントに埋め込まれている大量のテキストストリームをストリーミング方式で読み取ることができます。つまり、値全体に1つの文字列を割り当てるのではなく、一度に少数の文字を読み取ることができます。This method enables reading of very large streams of text embedded in an XML document in a streaming fashion, that is, a small number of characters at a time instead of allocating a single string for the whole value. このメソッドは、値 (が) を持つ任意のノードで呼び出すことができ HasValue true ます。ただし、ノード値の実際のストリーミングは、テキスト、空白、有意の空白ノードで呼び出された場合にのみ発生します。This method can be called on any node that has a value (HasValue is true), however actual streaming of the node value only occurs when called on a text, white space and significant white space nodes. その他のノード型の値は、属性や CDATA ノードを含めてキャッシュされます。Other node type values are cached, including attributes and CDATA nodes.

このメソッドは、プロパティの内容のみを返し、を Value 移動しません XmlReaderThis method returns only the content of the Value property and does not move the XmlReader.

このメソッドは、ノード値の指定された文字数 () を、 count 指定されたオフセット () の文字バッファー () に読み取り、 buffer index バッファーに書き込まれた文字数を返します。This method reads the specified number of characters (count) of the node value into a character buffer (buffer) at a specified offset (index) and returns the number of characters written to the buffer. このメソッドは、 0 値の末尾に達したときにを返します。It returns the 0 when it has reached the end of the value. 値を再度読み取るために再起動することはできません。It cannot be restarted to read through the value again.

では、プロパティを除き、プロパティの呼び出しの間に ReadValueChunk XmlReader 変更は行われません ValueIn between calls to ReadValueChunk the XmlReader properties do no change except for the Value property. プロパティにアクセスするときは、 Value 実装に応じて、部分的な値 (によって返されない文字) または完全な値が返されることがあり ReadValueChunk ます。When the Value property is accessed it may either return a partial value (with characters not yet returned by ReadValueChunk) or a full value depending on the implementation. 名前空間のすべての実装は、 XmlReader System.Xml プロパティの実装の部分的な値を返し Value ます。All the XmlReader implementations in the System.Xml namespace return a partial value for the Value property implementation.

の呼び出しの間に、任意の Read メソッドを呼び出すことができ ReadValueChunk ます。Any Read method can be called in between calls to ReadValueChunk. このエラーが発生した場合、は XmlReader ストリーム内の次のに移動し、 XmlNodeType まだ返されていない文字はスキップされます。If this occurs, the XmlReader moves to the next XmlNodeType in the stream and any characters not yet returned are skipped.

ReadValueChunk 返された文字数よりも小さい場合があります。There may be a case when ReadValueChunk returns less than the requested number of characters. たとえば、サロゲートペアを持つ200文字の long 値が127と128に位置し、128文字のバッファーを使用して呼び出された場合、メソッドの呼び出しでは、要求された127では ReadValueChunk なく、128文字が返されます。For example, if you had a 200-character long value with a surrogate pair at positions 127 and 128 and you called ReadValueChunk with a 128-character buffer, the method call would return 127 characters instead of the requested 128. その後、次の呼び出しでサロゲートペアが返され ReadValueChunk ます。The surrogate pair would then be returned in the next ReadValueChunk call. この場合、では、 ReadValueChunk 要求された128文字が返されませんでした。これが原因で、バッファーの末尾でサロゲートペアが不完全になりました。In this case, ReadValueChunk did not return the requested 128 characters because doing so would have resulted in an incomplete surrogate pair at the end of the buffer.

このメソッドの非同期バージョンについては、「」を参照してください ReadValueChunkAsyncFor the asynchronous version of this method, see ReadValueChunkAsync.