XmlReader.ReadValueChunk(Char[], Int32, Int32) Método

Definición

Lee grandes secuencias de texto incrustadas en un documento 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

Parámetros

buffer
Char[]

Matriz de caracteres que sirve como búfer en el que se escribe el contenido de texto.The array of characters that serves as the buffer to which the text contents are written. Este valor no puede ser null.This value cannot be null.

index
Int32

Desplazamiento en el búfer en el que XmlReader puede empezar a copiar los resultados.The offset within the buffer where the XmlReader can start to copy the results.

count
Int32

Número máximo de caracteres que se van a copiar en el búfer.The maximum number of characters to copy into the buffer. El número real de caracteres copiados se devuelve desde este método.The actual number of characters copied is returned from this method.

Devoluciones

Número de caracteres leídos en el búfer.The number of characters read into the buffer. Si no hay más contenido de texto, se devuelve el valor cero.The value zero is returned when there is no more text content.

Excepciones

El nodo actual no tiene ningún valor (HasValue es false).The current node does not have a value (HasValue is false).

o bien-or- Se llamó un método XmlReader antes de que se termine una operación asincrónica anterior.An XmlReader method was called before a previous asynchronous operation finished. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

El valor buffer es null.The buffer value is null.

El índice del búfer (index) o la suma del índice y el recuento (index + count) es mayor que el tamaño de búfer asignado.The index into the buffer, or index + count is larger than the allocated buffer size.

La implementación de XmlReader no admite este método.The XmlReader implementation does not support this method.

El formato de los datos XML no es correcto.The XML data is not well-formed.

Comentarios

Este método permite la lectura de secuencias muy grandes de texto incrustadas en un documento XML en un modo de transmisión por secuencias, es decir, un pequeño número de caracteres a la vez en lugar de asignar una única cadena para todo el valor.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. Se puede llamar a este método en cualquier nodo que tenga un valor (HasValue se true); sin embargo, el streaming real del valor de nodo solo se produce cuando se llama en un nodo de texto, espacio en blanco y espacio en blanco significativo.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. Otros valores de tipo de nodo se almacenan en caché, incluidos los atributos y los nodos CDATA.Other node type values are cached, including attributes and CDATA nodes.

Este método devuelve solo el contenido de la propiedad Value y no mueve el XmlReader.This method returns only the content of the Value property and does not move the XmlReader.

Este método lee el número especificado de caracteres (count) del valor de nodo en un búfer de caracteres (buffer) en un desplazamiento especificado (index) y devuelve el número de caracteres que se escriben en el búfer.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. Devuelve el 0 cuando se alcanza el final del valor.It returns the 0 when it has reached the end of the value. No se puede reiniciar para volver a leer el valor.It cannot be restarted to read through the value again.

Entre las llamadas a ReadValueChunk las propiedades de XmlReader no realizan ningún cambio excepto la propiedad Value.In between calls to ReadValueChunk the XmlReader properties do no change except for the Value property. Cuando se tiene acceso a la propiedad Value, puede devolver un valor parcial (con caracteres no devueltos aún por ReadValueChunk) o un valor completo en función de la implementación.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. Todas las implementaciones de XmlReader en el espacio de nombres System.Xml devuelven un valor parcial para la implementación de la propiedad Value.All the XmlReader implementations in the System.Xml namespace return a partial value for the Value property implementation.

Se puede llamar a cualquier método de lectura entre las llamadas a ReadValueChunk.Any Read method can be called in between calls to ReadValueChunk. Si esto ocurre, el XmlReader se desplaza a la siguiente XmlNodeType de la secuencia y se omiten los caracteres que todavía no se hayan devuelto.If this occurs, the XmlReader moves to the next XmlNodeType in the stream and any characters not yet returned are skipped.

Puede haber un caso en el que ReadValueChunk devuelva un valor menor que el número solicitado de caracteres.There may be a case when ReadValueChunk returns less than the requested number of characters. Por ejemplo, si tuviera un valor largo de 200 caracteres con un par suplente en las posiciones 127 y 128 y llamara ReadValueChunk con un búfer de caracteres 128, la llamada al método devolvería 127 caracteres en lugar del valor de 128 solicitado.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. A continuación, se devolvería el par suplente en la siguiente llamada a ReadValueChunk.The surrogate pair would then be returned in the next ReadValueChunk call. En este caso, ReadValueChunk no devolvió los caracteres 128 solicitados porque al hacerlo se habría producido un par suplente incompleto al final del búfer.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.

Para obtener la versión asincrónica de este método, vea ReadValueChunkAsync.For the asynchronous version of this method, see ReadValueChunkAsync.

Se aplica a