Condividi tramite


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

Definizione

Legge flussi di testo di grandi dimensioni incorporati in un documento 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

Parametri

buffer
Char[]

Matrice di caratteri che funge da buffer in cui viene scritto il contenuto di testo. Questo valore non può essere null.

index
Int32

L'offset all'interno del buffer in cui il XmlReader può iniziare a copiare i risultati.

count
Int32

Numero massimo di caratteri da copiare nel buffer. Il numero effettivo di caratteri copiati viene restituito da questo metodo.

Restituisce

Int32

Numero di caratteri letti nel buffer. Quando non è più disponibile contenuto di testo, viene restituito il valore zero.

Eccezioni

Il nodo corrente non ha un valore (HasValue è false).

-oppure-

È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".

Il valore buffer è null.

L'indice nel buffer oppure la somma di indice e numero è superiore alla dimensione del buffer allocato.

L'implementazione di XmlReader non supporta questo metodo.

Il formato dei dati XML non è corretto.

Commenti

Questo metodo consente la lettura di flussi di testo molto grandi incorporati in un documento XML in modo di streaming, ovvero un numero ridotto di caratteri alla volta anziché allocare una singola stringa per l'intero valore. Questo metodo può essere chiamato in qualsiasi nodo con un valore (HasValue è true), ma lo streaming effettivo del valore del nodo si verifica solo quando viene chiamato su un testo, uno spazio vuoto e uno spazio vuoto significativo. Altri valori dei tipi di nodo vengono memorizzati nella cache, inclusi gli attributi e i nodi CDATA.

Questo metodo restituisce solo il contenuto della Value proprietà e non sposta .XmlReader

Questo metodo legge il numero specificato di caratteri () del valore del nodo in un buffer di caratteri () in corrispondenza di un offsetindex specificato (count``buffer) e restituisce il numero di caratteri scritti nel buffer. Restituisce l'oggetto 0 quando ha raggiunto la fine del valore. Non è possibile riavviare per leggere di nuovo il valore.

Tra le chiamate alle ReadValueChunk XmlReader proprietà non cambiano, ad eccezione della Value proprietà. Quando la Value proprietà viene accessibile, può restituire un valore parziale (con caratteri non ancora restituiti da ReadValueChunk) o un valore completo a seconda dell'implementazione. Tutte le XmlReader implementazioni nello System.Xml spazio dei nomi restituiscono un valore parziale per l'implementazione della Value proprietà.

Qualsiasi metodo Read può essere chiamato tra le chiamate a ReadValueChunk. In questo caso, gli XmlReader spostamenti vengono spostati al successivo XmlNodeType nel flusso e tutti i caratteri non ancora restituiti vengono ignorati.

Potrebbe verificarsi un caso in cui ReadValueChunk restituisce meno del numero richiesto di caratteri. Ad esempio, se si dispone di un valore lungo 200 caratteri con una coppia surrogata in posizioni 127 e 128 e si chiama ReadValueChunk con un buffer a 128 caratteri, la chiamata al metodo restituirà 127 caratteri anziché quella richiesta 128. La coppia surrogata verrà quindi restituita nella chiamata successiva ReadValueChunk . In questo caso, ReadValueChunk non ha restituito i 128 caratteri richiesti perché in questo caso sarebbe stata causata una coppia surrogata incompleta alla fine del buffer.

Per la versione asincrona di questo metodo, vedere ReadValueChunkAsync.

Si applica a