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 vengono scritti i contenuti del testo. Questo valore non può essere null.

index
Int32

Offset all'interno del buffer in cui 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

Numero di caratteri letti nel buffer. Il valore zero viene restituito quando non è presente più contenuto di testo.

Eccezioni

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

oppure

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

Il valore buffer è null.

L'indice nel buffer o indice + conteggio è maggiore della dimensione del buffer allocata.

L'implementazione XmlReader non supporta questo metodo.

I dati XML non sono ben formati.

Commenti

Questo metodo consente la lettura di flussi di testo molto grandi incorporati in un documento XML in modalità 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 nodi di spazi vuoti significativi. 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 (count) del valore del nodo in un buffer di caratteri () in corrispondenza di un offset specificato (bufferindex) e restituisce il numero di caratteri scritti nel buffer. Restituisce l'oggetto 0 quando ha raggiunto la fine del valore. Non è possibile riavviarlo per leggere di nuovo il valore.

Tra le chiamate alle ReadValueChunkXmlReader proprietà non viene apportata alcuna modifica, ad eccezione della Value proprietà . Quando si accede alla Value proprietà, 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.

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

Per la versione asincrona di questo metodo, vedere ReadValueChunkAsync.

Si applica a