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

Definizione

Legge l'elemento e decodifica il contenuto Base64.Reads the element and decodes the Base64 content.

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.The buffer into which to copy the resulting text. Questo valore non può essere null.This value cannot be null.

index
Int32 Int32 Int32 Int32

Offset nel buffer a partire da cui iniziare a copiare il risultato.The offset into the buffer where to start copying the result.

count
Int32 Int32 Int32 Int32

Numero massimo di byte da copiare nel buffer.The maximum number of bytes to copy into the buffer. Il numero effettivo di byte copiati viene restituito da questo metodo.The actual number of bytes copied is returned from this method.

Restituisce

Numero di byte scritti nel buffer.The number of bytes written to the buffer.

Eccezioni

Il valore di buffer è null.The buffer value is null.

Il nodo corrente non è un nodo elemento.The current node is not an element node.

In alternativa-or-

È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente.An XmlReader method was called before a previous asynchronous operation finished. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

L'indice nel buffer oppure la somma di indice e numero è superiore alla dimensione del buffer allocato.The index into the buffer or index + count is larger than the allocated buffer size.

L'implementazione di XmlReader non supporta questo metodo.The XmlReader implementation does not support this method.

L'elemento include contenuto misto.The element contains mixed-content.

Il contenuto non può essere convertito nel tipo richiesto.The content cannot be converted to the requested type.

Esempi

L'esempio seguente legge un inline Base64 immagine codificati.The following example reads an inline Base64 encoded image. Il Base64 i dati sono incorporati all'interno di <image> elemento.The Base64 data is embedded within the <image> element. Oggetto BinaryWriter viene usato per creare un nuovo file di dati binari.A BinaryWriter is used to create a new binary data file.


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 'Base64DecodeImageFile

Commenti

Questo metodo legge il contenuto dell'elemento, decodifica usando Base64 codifica e restituisce i byte binari decodificati (ad esempio, un inline Base64-immagine GIF codificati) nel buffer.This method reads the element content, decodes it using Base64 encoding, and returns the decoded binary bytes (for example, an inline Base64-encoded GIF image) into the buffer. Per altre informazioni, vedere RFC 1521, "parte MIME (Multipurpose Internet Mail Extensions) uno: Meccanismi per la specifica e che descrive il formato dei corpi dei messaggi Internet".For more information, see RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies". È possibile ottenere RFC dal richiesta per il sito Web di commenti.You can obtain RFCs from the Request for Comments Web site.

ReadElementContentAsBase64 può solo leggere elementi con contenuto semplice.ReadElementContentAsBase64 can only read simple-content elements. L'elemento può contenere testo, gli spazi vuoti, gli spazi vuoti significativi, sezioni CDATA, commenti e istruzioni di elaborazione.The element can contain text, white space, significant white space, CDATA sections, comments and processing instructions. Può inoltre contenere i riferimenti alle entità, vengono espansi automaticamente.It can also contain entity references, which are automatically expanded. L'elemento non può avere elementi figlio.The element cannot have child elements.

Questo metodo è molto simile al ReadContentAsBase64 metodo ad eccezione del fatto che può essere chiamato solo su tipi di nodo elemento.This method is very similar to the ReadContentAsBase64 method except that it can only be called on element node types.

Se il count valore è maggiore del numero di byte nel documento, o se è uguale al numero di byte nel documento, il XmlReader legge tutti i byte rimanenti del documento e restituisce il numero di byte letti.If the count value is higher than the number of bytes in the document, or if it is equal to the number of bytes in the document, the XmlReader reads all the remaining bytes in the document and returns the number of bytes read. La prossima XmlReader chiamata al metodo restituisce zero e si sposta il lettore al nodo successivo le EndElement.The next XmlReader method call returns a zero and moves the reader to the node following the EndElement.

Se si chiama Read prima di tutto il contenuto dell'elemento viene utilizzato, il lettore potrebbe comportarsi come se fosse stato utilizzato il primo contenuto e quindi il Read metodo è stato chiamato.If you call Read before all of the element content is consumed, the reader may behave as if the first content was consumed and then the Read method was called. Ciò significa che il lettore leggerà tutto il testo fino a quando non viene rilevato l'elemento finale.This means that the reader will read all the text until the end element is encountered. Verrà quindi leggere il nodo di tag di fine, leggere il nodo successivo e quindi si posizionerà sul prossimo nodo successivo.It will then read the end tag node, read the next node, and then position itself on the next subsequent node.

Per la versione asincrona di questo metodo, vedere ReadElementContentAsBase64Async.For the asynchronous version of this method, see ReadElementContentAsBase64Async.

Si applica a

Vedi anche