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

Définition

Lit des flux de texte volumineux incorporés dans un document 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

Paramètres

buffer
Char[]

Tableau de caractères servant de mémoire tampon dans laquelle le texte est écrit. Cette valeur ne peut pas être null.

index
Int32

Offset dans la mémoire tampon où le XmlReader peut commencer à copier les résultats.

count
Int32

Nombre maximal de caractères à copier dans la mémoire tampon. Le nombre réel de caractères copiés est retourné à partir de cette méthode.

Retours

Nombre total de caractères lus dans la mémoire tampon. La valeur zéro est retournée quand il n'y a plus de contenu de texte.

Exceptions

Le nœud actuel n'a pas de valeur (HasValue est false).

- ou -

Une méthode XmlReader a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, l’exception InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».

buffer a la valeur null.

L'index de la mémoire tampon, ou l'index augmenté de la valeur du paramètre count, est supérieur à la taille de la mémoire tampon allouée.

L'implémentation de XmlReader ne prend pas en charge cette méthode.

La forme des données XML n'est pas correcte.

Remarques

Cette méthode permet de lire de très grands flux de texte incorporés dans un document XML de manière à diffuser en continu, c’est-à-dire un petit nombre de caractères à la fois au lieu d’allouer une seule chaîne pour la valeur entière. Cette méthode peut être appelée sur n’importe quel nœud qui a une valeur (HasValue est true), mais la diffusion en continu réelle de la valeur du nœud se produit uniquement lorsqu’elle est appelée sur un texte, un espace blanc et des nœuds d’espace blanc significatifs. D’autres valeurs de type de nœud sont mises en cache, notamment les attributs et les nœuds CDATA.

Cette méthode retourne uniquement le contenu de la Value propriété et ne déplace pas le XmlReader.

Cette méthode lit le nombre spécifié de caractères (count) de la valeur de nœud dans une mémoire tampon de caractères (buffer) à un décalage spécifié (index) et retourne le nombre de caractères écrits dans la mémoire tampon. Il retourne le 0 lorsqu’il a atteint la fin de la valeur. Il ne peut pas être redémarré pour lire à nouveau la valeur.

Entre les appels aux ReadValueChunk propriétés, aucun changement n’est à l’exception XmlReader de la Value propriété . Lorsque la Value propriété est accessible, elle peut renvoyer une valeur partielle (avec des caractères non encore retournés par ReadValueChunk) ou une valeur complète en fonction de l’implémentation. Toutes les XmlReader implémentations dans l’espace System.Xml de noms retournent une valeur partielle pour l’implémentation de propriété Value .

Toute méthode Read peut être appelée entre les appels à ReadValueChunk. Si cela se produit, le XmlReader passe au suivant XmlNodeType dans le flux et tous les caractères qui ne sont pas encore retournés sont ignorés.

Il peut y avoir un cas où ReadValueChunk retourne moins que le nombre de caractères demandé. Par exemple, si vous aviez une valeur de 200 caractères avec une paire de substitution aux positions 127 et 128 et que vous avez appelé ReadValueChunk avec une mémoire tampon de 128 caractères, l’appel de méthode retournerait 127 caractères au lieu des 128 demandés. La paire de substituts est ensuite retournée lors de l’appel suivant ReadValueChunk . Dans ce cas, ReadValueChunk n’a pas retourné les 128 caractères demandés, car cela aurait entraîné une paire de substituts incomplète à la fin de la mémoire tampon.

Pour obtenir la version asynchrone de cette méthode, consultez ReadValueChunkAsync.

S’applique à