XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.