XmlReader.ReadValueChunk(Char[], Int32, Int32) Metoda

Definicja

Odczytuje duże strumienie tekstu osadzone w dokumencie 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

Parametry

buffer
Char[]

Tablica znaków, która służy jako bufor, do którego jest zapisywana zawartość tekstu.The array of characters that serves as the buffer to which the text contents are written. Ta wartość nie może być null.This value cannot be null.

index
Int32

Przesunięcie w buforze, w którym XmlReader może rozpocząć kopiowanie wyników.The offset within the buffer where the XmlReader can start to copy the results.

count
Int32

Maksymalna liczba znaków do skopiowania do buforu.The maximum number of characters to copy into the buffer. Rzeczywista liczba skopiowanych znaków jest zwracana z tej metody.The actual number of characters copied is returned from this method.

Zwraca

Liczba znaków odczytywanych w buforze.The number of characters read into the buffer. Wartość zero jest zwracana, gdy nie ma więcej zawartości tekstowej.The value zero is returned when there is no more text content.

Wyjątki

Bieżący węzeł nie ma wartości (HasValue jest false).The current node does not have a value (HasValue is false).

lub-or- Metoda XmlReader została wywołana przed ukończeniem poprzedniej operacji asynchronicznej.An XmlReader method was called before a previous asynchronous operation finished. W takim przypadku InvalidOperationException jest generowany z komunikatem "asynchroniczna operacja jest już w toku".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Wartość buffer jest null.The buffer value is null.

Indeks w buforze lub indeks + Count jest większy niż rozmiar przydzielonego buforu.The index into the buffer, or index + count is larger than the allocated buffer size.

Implementacja XmlReader nie obsługuje tej metody.The XmlReader implementation does not support this method.

Dane XML nie są poprawnie sformułowane.The XML data is not well-formed.

Uwagi

Ta metoda umożliwia odczytywanie bardzo dużych strumieni tekstu osadzonego w dokumencie XML w formie przesyłania strumieniowego, czyli niewielką liczbę znaków w czasie zamiast alokowania pojedynczego ciągu dla całej wartości.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. Tę metodę można wywołać dla dowolnego węzła, który ma wartość (HasValue jest true), jednak rzeczywiste przesyłanie strumieniowe wartości węzła występuje tylko wtedy, gdy jest wywoływana dla tekstu, białych znaków i znaczących białych znaków.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. Inne wartości typu węzła są buforowane, łącznie z atrybutami i CDATA węzłami.Other node type values are cached, including attributes and CDATA nodes.

Ta metoda zwraca tylko zawartość właściwości Value i nie przenosi XmlReader.This method returns only the content of the Value property and does not move the XmlReader.

Ta metoda odczytuje określoną liczbę znaków (count) wartości węzła do buforu znaków (buffer) w określonym przesunięciu (index) i zwraca liczbę znaków zapisaną w buforze.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. Zwraca 0, gdy osiągnął koniec wartości.It returns the 0 when it has reached the end of the value. Nie można go ponownie uruchomić w celu ponownego odczytania wartości.It cannot be restarted to read through the value again.

Między wywołaniami do ReadValueChunk właściwości XmlReader nie zmieniają się z wyjątkiem właściwości Value.In between calls to ReadValueChunk the XmlReader properties do no change except for the Value property. Po uzyskaniu dostępu do właściwości Value mogą one zwracać wartość częściową (z znakami, które nie zostały jeszcze zwrócone przez ReadValueChunk) lub pełną wartość w zależności od implementacji.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. Wszystkie implementacje XmlReader w przestrzeni nazw System.Xml zwracają częściową wartość dla implementacji właściwości Value.All the XmlReader implementations in the System.Xml namespace return a partial value for the Value property implementation.

Wszystkie metody odczytu mogą być wywoływane między wywołaniami do ReadValueChunk.Any Read method can be called in between calls to ReadValueChunk. W takim przypadku XmlReader przechodzi do następnego XmlNodeType w strumieniu, a wszystkie znaki, które nie zostały zwrócone, są pomijane.If this occurs, the XmlReader moves to the next XmlNodeType in the stream and any characters not yet returned are skipped.

Może wystąpić sytuacja, gdy ReadValueChunk zwraca mniej niż żądana liczba znaków.There may be a case when ReadValueChunk returns less than the requested number of characters. Na przykład jeśli masz 200-znakową wartość Long z parą zastępczą w pozycjach 127 i 128, a wywołano ReadValueChunk z buforem zawierającym wartość 128-Character, wywołanie metody zwróci znaki 127 zamiast żądanego 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. Para zastępcza zostałaby następnie zwrócona w następnym wywołaniu ReadValueChunk.The surrogate pair would then be returned in the next ReadValueChunk call. W tym przypadku ReadValueChunk nie zwróciła żądanych znaków 128, ponieważ spowodowałoby to powstanie niekompletnej pary zastępczej na końcu buforu.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.

Aby uzyskać asynchroniczną wersję tej metody, zobacz ReadValueChunkAsync.For the asynchronous version of this method, see ReadValueChunkAsync.

Dotyczy