Partager via


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

Définition

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

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

S’applique à

Voir aussi