Condividi tramite


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

Definizione

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

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 letta un'immagine codificata inline Base64 . I Base64 dati vengono incorporati all'interno dell'elemento <image> . Un BinaryWriter oggetto viene usato per creare un nuovo file di dati binari.


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

Commenti

Questo metodo legge il contenuto dell'elemento, lo decodifica usando Base64 la codifica e restituisce i byte binari decodificati (ad esempio, un'immagine GIF con codifica inline Base64) nel buffer. Per altre informazioni, vedere RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Meccanismi per specificare e descrivere il formato dei corpi dei messaggi Internet". È possibile ottenere RFC dal sito Web Request for Comments .You can get rfcs from the Request for Comments web site.

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

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

Se il count valore è maggiore del numero di byte nel documento o se è uguale al numero di byte nel documento, XmlReader 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 fosse 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, leggerà il nodo successivo e quindi si posizionerà sul nodo successivo.

Per la versione asincrona di questo metodo, vedere ReadElementContentAsBase64Async.

Si applica a

Vedi anche