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

Definição

Lê o elemento e decodifica o Base64 conteúdo.

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 onde copiar o texto resultante. Este valor não pode ser null.

index
Int32

O deslocamento para o buffer onde começar a copiar o resultado.

count
Int32

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

Devoluções

O número de bytes escritos no buffer.

Exceções

O buffer valor é null.

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

-ou-

Um XmlReader método era chamado antes de uma operação assíncrona anterior terminar. Neste caso, InvalidOperationException é lançado com a mensagem "Uma operação assíncrona já está em curso."

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

A XmlReader implementação não suporta este método.

O elemento contém conteúdo misto.

O conteúdo não pode ser convertido para o tipo solicitado.

Exemplos

O exemplo seguinte lê uma imagem codificada em linha Base64 . Os Base64 dados estão incorporados no <image> elemento. A BinaryWriter é usado para criar um novo ficheiro de dados binário.


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

Observações

Este método lê o conteúdo do elemento, descodifica-o usando Base64 codificação e devolve os bytes binários decodificados (por exemplo, uma imagem GIF codificada em linha Base64) para o buffer. Para mais informações, consulte o RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Parte Um: Mecanismos para Especificar e Descrever o Formato dos Corpos de Mensagens na Internet". Pode obter RFCs no site de Pedido de Comentários.

ReadElementContentAsBase64 Só consegue ler elementos de conteúdo simples. O elemento pode conter texto, espaços em branco, espaços em branco significativos, secções CDATA, comentários e instruções de processamento. Também pode conter referências de entidades, que são automaticamente expandidas. O elemento não pode ter elementos filhos.

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

Se o count valor for superior ao número de bytes no documento, ou se for igual ao número de bytes no documento, lê XmlReader todos os bytes restantes no documento e devolve o número de bytes lidos. A próxima XmlReader chamada ao método devolve um zero e move o leitor para o nó que segue o EndElement.

Se chamar Read antes de todo o conteúdo elemental ser consumido, o leitor pode comportar-se como se o primeiro conteúdo tivesse sido consumido e depois o Read método tivesse sido chamado. Isto significa que o leitor vai ler todo o texto até encontrar o elemento final. Depois lê o nó da etiqueta final, lê o nó seguinte e posiciona-se no nó seguinte.

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

Aplica-se a

Ver também