XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.