XmlReader.ReadElementContentAsBinHex(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 BinHex
.
public:
virtual int ReadElementContentAsBinHex(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBinHex (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBinHex : byte[] * int * int -> int
override this.ReadElementContentAsBinHex : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBinHex (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 BinHex
. Les BinHex
données sont incorporées dans l’élément <image>
. Un BinaryWriter fichier de données binaire est utilisé pour créer un fichier de données binaires.
public static void BinHexDecodeImageFile() {
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 BinHex data.
Console.WriteLine("\r\nReading BinHex...");
BinaryWriter bw = new BinaryWriter(outputFile);
while ((readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50))>0) {
bw.Write(buffer, 0, readBytes);
}
outputFile.Close();
}
}
Public Shared Sub BinHexDecodeImageFile()
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 BinHex data.
Console.WriteLine(vbCr + vbLf + "Reading BinHex...")
Dim bw As New BinaryWriter(outputFile)
readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
While (readBytes > 0)
bw.Write(buffer, 0, readBytes)
readBytes = reader.ReadElementContentAsBinHex(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 BinHex
de l’encodage et retourne les octets binaires décodés (par exemple, une image GIF encodée inline BinHex
) dans la mémoire tampon.
Cette méthode ne peut lire que des éléments de contenu simple. L’élément peut contenir du texte, des espaces blancs, des espaces blancs significatifs, 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 ReadContentAsBinHex 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 dans le document et retourne le nombre d’octets lus. 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 de fin 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 ReadElementContentAsBinHexAsync.