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.