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

定義

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

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[]

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

index
Int32

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

count
Int32

バッファーにコピーする最大文字数。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. このメソッドは、値を持つ任意のノードで呼び出すことができます (HasValuetrue)。ただし、ノード値の実際のストリーミングは、テキスト、空白、有意の空白ノードで呼び出された場合にのみ発生します。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 プロパティの内容のみを返し、XmlReaderを移動しません。This method returns only the content of the Value property and does not move the XmlReader.

このメソッドは、ノード値の指定された文字数 (count) を、指定されたオフセット (index) の文字バッファー (buffer) に読み取り、バッファーに書き込まれた文字数を返します。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 プロパティは Value プロパティを除き、変更されません。In 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. System.Xml 名前空間のすべての XmlReader 実装は、Value プロパティの実装に対して部分的な値を返します。All the XmlReader implementations in the System.Xml namespace return a partial value for the Value property implementation.

ReadValueChunkの呼び出しの間に、任意の Read メソッドを呼び出すことができます。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 ReadValueChunk を呼び出した場合、メソッドの呼び出しでは、要求された127ではなく、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.

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

適用対象