Compartilhar via


XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Método

Definição

Lê o elemento e decodifica o conteúdo de 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

Parâmetros

buffer
Byte[]

O buffer para o qual o texto resultante será copiado. Este valor pode não ser null.

index
Int32

O deslocamento do buffer no qual o resultado começará a ser copiado.

count
Int32

O número máximo de bytes a serem copiados para o buffer. O número real de bytes copiados é retornado deste método.

Retornos

Int32

O número de bytes gravados no buffer.

Exceções

O valor buffer é null.

O nó atual não é um nó de elemento.

- ou -

Um método XmlReader foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.

O índice de buffer ou de índice + contagem é maior que o tamanho do buffer alocado.

A implementação XmlReader não dá suporte a esse método.

O elemento contém conteúdo misto.

Não é possível converter conteúdo no tipo solicitado.

Exemplos

O exemplo a seguir lê uma imagem codificada embutida Base64 . Os Base64 dados são inseridos no <image> elemento. Um BinaryWriter é usado para criar um novo arquivo de dados binários.


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

Comentários

Esse método lê o conteúdo do elemento, o decodifica usando Base64 codificação e retorna os bytes binários decodificados (por exemplo, uma imagem GIF codificada em linha Base64) no buffer. Para obter mais informações, consulte RFC 1521, "MIME (Extensões multiuso do Internet Mail) Parte Um: mecanismos para especificar e descrever o formato de corpos de mensagens da Internet". Você pode obter RFCs no site de Solicitação de Comentários.

ReadElementContentAsBase64 só pode ler elementos de conteúdo simples. O elemento pode conter texto, espaço em branco, espaço em branco significativo, seções CDATA, comentários e instruções de processamento. Ele também pode conter referências de entidade, que são expandidas automaticamente. O elemento não pode ter elementos filho.

Esse método é muito semelhante ao ReadContentAsBase64 método, exceto que ele só pode ser chamado em tipos de nó de elemento.

Se o count valor for maior que o número de bytes no documento ou se for igual ao número de bytes no documento, ele XmlReader lerá todos os bytes restantes no documento e retornará o número de bytes lidos. A próxima XmlReader chamada de método retorna um zero e move o leitor para o nó após o EndElement.

Se você chamar Read antes que todo o conteúdo do elemento seja consumido, o leitor poderá se comportar como se o primeiro conteúdo fosse consumido e, em seguida, o Read método fosse chamado. Isso significa que o leitor lerá todo o texto até que o elemento final seja encontrado. Em seguida, ele lerá o nó de marca final, lerá o próximo nó e, em seguida, posicionará-se no próximo nó subsequente.

Para obter a versão assíncrona deste método, consulte ReadElementContentAsBase64Async.

Aplica-se a

Confira também