XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Metodo

Definizione

Legge l'elemento e decodifica il contenuto 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

Parametri

buffer
Byte[]

Buffer in cui copiare il testo risultante. Questo valore non può essere null.

index
Int32

Offset nel buffer a partire da cui iniziare a copiare il risultato.

count
Int32

Numero massimo di byte da copiare nel buffer. Il numero effettivo di byte copiati viene restituito da questo metodo.

Restituisce

Int32

Numero di byte scritti nel buffer.

Eccezioni

Il valore buffer è null.

Il nodo corrente non è un nodo elemento.

-oppure-

È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".

L'indice nel buffer oppure la somma di indice e numero è superiore alla dimensione del buffer allocato.

L'implementazione di XmlReader non supporta questo metodo.

L'elemento include contenuto misto.

Il contenuto non può essere convertito nel tipo richiesto.

Esempio

Nell'esempio seguente viene letto un'immagine codificata inline BinHex . I BinHex dati vengono incorporati all'interno dell'elemento <image> . Viene BinaryWriter usato per creare un nuovo file di dati binario.

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

Commenti

Questo metodo legge il contenuto dell'elemento, lo decodifica usando BinHex la codifica e restituisce i byte binari decodificati (ad esempio un'immagine GIF con codifica inline BinHex) nel buffer.

Questo metodo può leggere solo elementi di contenuto semplice. L'elemento può contenere testo, spazio vuoto, spazi vuoti significativi, sezioni CDATA, commenti ed istruzioni di elaborazione. Può anche contenere riferimenti alle entità, che vengono espansi automaticamente. L'elemento non può avere elementi figlio.

Questo metodo è molto simile al ReadContentAsBinHex metodo, ad eccezione del fatto che può essere chiamato solo sui tipi di nodi di elemento.

Se il count valore è superiore al numero di byte nel documento o se è uguale al numero di byte nel documento, XmlReader il valore legge tutti i byte rimanenti nel documento e restituisce il numero di byte letti. La chiamata al metodo successivo XmlReader restituisce uno zero e sposta il lettore nel nodo che segue .EndElement

Se si chiama Read prima che venga utilizzato tutto il contenuto dell'elemento, il lettore può comportarsi come se il primo contenuto è stato utilizzato e quindi il Read metodo è stato chiamato. Ciò significa che il lettore leggerà tutto il testo fino a quando non viene rilevato l'elemento finale. Leggerà quindi il nodo del tag finale, legge il nodo successivo e quindi si posiziona sul nodo successivo.

Per la versione asincrona di questo metodo, vedere ReadElementContentAsBinHexAsync.

Si applica a

Vedi anche