Partager via


XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Méthode

Définition

Lit l'élément et décode le contenu au format Base64.

public:
 virtual int ReadElementContentAsBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBase64 (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBase64 : byte[] * int * int -> int
override this.ReadElementContentAsBase64 : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBase64 (buffer As Byte(), index As Integer, count As Integer) As Integer

Paramètres

buffer
Byte[]

Mémoire tampon dans laquelle copier le texte obtenu. Cette valeur ne peut pas être null.

index
Int32

Offset de la mémoire tampon où commence la copie du résultat.

count
Int32

Nombre maximal d'octets à copier dans la mémoire tampon. Le nombre réel d'octets copiés est retourné à partir de cette méthode.

Retours

Int32

Nombre d'octets écrits dans la mémoire tampon.

Exceptions

buffer a la valeur null.

Le nœud actuel n'est pas un nœud d'élément.

  • 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 ».

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.

L'élément contient un contenu mixte.

Impossible de convertir le contenu en type demandé.

Exemples

L’exemple suivant lit une image encodée en ligne Base64 . Les Base64 données sont incorporées dans l’élément <image> . Un BinaryWriter est utilisé pour créer un fichier de données binaires.


public static void Base64DecodeImageFile() {

  byte[] buffer = new byte[1000];
  int readBytes = 0;

  using (XmlReader reader = XmlReader.Create("output.xml")) {
                    
        FileStream outputFile = new FileStream(@"C:\artFiles\data\newImage.jpg",
                    FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
        // Read to the image element.
        reader.ReadToFollowing("image");
        // Read the Base64 data.
        Console.WriteLine("\r\nReading Base64...");
        BinaryWriter bw = new BinaryWriter(outputFile);
        while ((readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50))>0) {
            bw.Write(buffer, 0, readBytes);
        }
        outputFile.Close();
  }
}
Public Shared Sub Base64DecodeImageFile() 
    
    Dim buffer(999) As Byte
    Dim readBytes As Integer = 0
    
    Using reader As XmlReader = XmlReader.Create("output.xml")

            Dim outputFile As New FileStream("C:\artFiles\data\newImage.jpg", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
            ' Read to the image element.
            reader.ReadToFollowing("image")
            ' Read the Base64 data.
            Console.WriteLine(vbCr + vbLf + "Reading Base64...")
            Dim bw As New BinaryWriter(outputFile)
            readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            While (readBytes > 0)
                bw.Write(buffer, 0, readBytes)
                readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            End While
            outputFile.Close()
        
    End Using

End Sub

Remarques

Cette méthode lit le contenu de l’élément, le décode à l’aide Base64 de l’encodage et retourne les octets binaires décodés (par exemple, une image GIF encodée en ligne Base64) dans la mémoire tampon. Pour plus d’informations, consultez RFC 1521, « MIME (Extensions de messagerie Internet multiutilisables) Partie 1 : Mécanismes de spécification et de description du format des corps de messages Internet ». Vous pouvez obtenir des RFC à partir du site web Demande de commentaires.

ReadElementContentAsBase64 ne peut lire que des éléments de contenu simple. L’élément peut contenir du texte, de l’espace blanc, de l’espace blanc significatif, des sections CDATA, des commentaires et des instructions de traitement. Il peut également contenir des références d’entité, qui sont automatiquement développées. L’élément ne peut pas avoir d’éléments enfants.

Cette méthode est très similaire à la ReadContentAsBase64 méthode, sauf qu’elle ne peut être appelée que sur les types de nœuds d’élément.

Si la count valeur est supérieure au nombre d’octets du document ou si elle est égale au nombre d’octets du document, elle XmlReader lit tous les octets restants du document et retourne le nombre d’octets en lecture. L’appel de méthode suivant XmlReader retourne un zéro et déplace le lecteur vers le nœud suivant le EndElement.

Si vous appelez Read avant que tout le contenu de l’élément soit consommé, le lecteur peut se comporter comme si le premier contenu a été consommé, puis la Read méthode a été appelée. Cela signifie que le lecteur lit tout le texte jusqu’à ce que l’élément final soit rencontré. Il lit ensuite le nœud de balise de fin, lit le nœud suivant, puis se positionne sur le nœud suivant.

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

S’applique à

Voir aussi