XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.