Partilhar via


XmlTextReader.ReadBase64(Byte[], Int32, Int32) Método

Definição

Decodifica a Base64 e retorna os bytes binários decodificados.

public:
 int ReadBase64(cli::array <System::Byte> ^ array, int offset, int len);
public int ReadBase64 (byte[] array, int offset, int len);
member this.ReadBase64 : byte[] * int * int -> int
Public Function ReadBase64 (array As Byte(), offset As Integer, len As Integer) As Integer

Parâmetros

array
Byte[]

A matriz de caracteres que serve como o buffer no qual os conteúdos de texto são gravados.

offset
Int32

O índice de base zero na matriz que especifica onde o método pode começar a gravar no buffer.

len
Int32

O número de bytes a serem gravados no buffer.

Retornos

Int32

O número de bytes gravados no buffer.

Exceções

A sequência Base64 não é válida.

O valor de array é null.

offset < 0 ou len < 0 ou len > array.Length- offset.

Exemplos

O exemplo a seguir lê um arquivo que contém dados Base64 e BinHex.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlTextReader^ reader = nullptr;
   String^ filename = "binary.xml";
   try
   {
      reader = gcnew XmlTextReader( filename );
      reader->WhitespaceHandling = WhitespaceHandling::None;
      
      // Read the file. Stop at the Base64 element.
      while ( reader->Read() )
      {
         if ( "Base64" == reader->Name )
                  break;
      }
      
      // Read the Base64 data. Write the decoded 
      // bytes to the console.
      Console::WriteLine( "Reading Base64... " );
      int base64len = 0;
      array<Byte>^base64 = gcnew array<Byte>(1000);
      do
      {
         base64len = reader->ReadBase64( base64, 0, 50 );
         for ( int i = 0; i < base64len; i++ )
            Console::Write( base64[ i ] );
      }
      while ( reader->Name->Equals( "Base64" ) );
      
      // Read the BinHex data. Write the decoded 
      // bytes to the console.
      Console::WriteLine( "\r\nReading BinHex..." );
      int binhexlen = 0;
      array<Byte>^binhex = gcnew array<Byte>(1000);
      do
      {
         binhexlen = reader->ReadBinHex( binhex, 0, 50 );
         for ( int i = 0; i < binhexlen; i++ )
            Console::Write( binhex[ i ] );
      }
      while ( reader->Name->Equals( "BinHex" ) );
   }
   finally
   {
      Console::WriteLine();
      Console::WriteLine( "Processing of the file {0} complete.", filename );
      if ( reader != nullptr )
            reader->Close();
   }

}
using System;
using System.IO;
using System.Xml;

public class Sample {

  private const string filename = "binary.xml";

  public static void Main() {

     XmlTextReader reader = null;

     try {

        reader = new XmlTextReader(filename);
        reader.WhitespaceHandling = WhitespaceHandling.None;

        // Read the file. Stop at the Base64 element.
        while (reader.Read()) {
           if ("Base64" == reader.Name) break;
        }
            
        // Read the Base64 data. Write the decoded
        // bytes to the console.
        Console.WriteLine("Reading Base64... ");
        int base64len = 0;
        byte[] base64 = new byte[1000];
        do {
           base64len = reader.ReadBase64(base64, 0, 50);
           for (int i=0; i < base64len; i++) Console.Write(base64[i]);
        } while (reader.Name == "Base64");
    
        // Read the BinHex data. Write the decoded
        // bytes to the console.
        Console.WriteLine("\r\nReading BinHex...");
        int binhexlen = 0;
        byte[] binhex = new byte[1000];
        do {
           binhexlen = reader.ReadBinHex(binhex, 0, 50);
           for (int i=0; i < binhexlen; i++) Console.Write(binhex[i]);
        }  while (reader.Name == "BinHex");
     }

     finally {
        Console.WriteLine();
        Console.WriteLine("Processing of the file {0} complete.", filename);
        if (reader != null)
          reader.Close();
     }
  }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
   Private Const filename As String = "binary.xml"
   
   
   Public Shared Sub Main()
      Dim reader As XmlTextReader = Nothing
      Dim i As Integer

      Try
         reader = New XmlTextReader(filename)
         reader.WhitespaceHandling = WhitespaceHandling.None         

         ' Read the file. Stop at the Base64 element.         
         While reader.Read()
            If "Base64" = reader.Name Then
               Exit While
            End If
         End While 

         ' Read the Base64 data. Write the decoded 
         ' bytes to the console.
         Console.WriteLine("Reading base64... ")
         Dim base64len As Integer = 0
         Dim base64(1000) As Byte
         Do
            base64len = reader.ReadBase64(base64, 0, 50)
            For i = 0 To base64len - 1
               Console.Write(base64(i))
            Next i
         Loop While (reader.Name = "Base64")

         ' Read the BinHex data. Write the decoded 
         ' bytes to the console.
         Console.WriteLine(ControlChars.CrLf & "Reading binhex....")
         Dim binhexlen As Integer = 0
         Dim binhex(1000) As Byte
         binhexlen = reader.ReadBinHex(binhex, 0, 50)
         Do
            binhexlen = reader.ReadBinHex(binhex, 0, 50)
            For i = 0 To binhexlen - 1
               Console.Write(binhex(i))
            Next i
         Loop While (reader.Name = "BinHex") 
      
      Finally
         Console.WriteLine()
         Console.WriteLine("Processing of the file {0} complete.", filename)
         If Not (reader Is Nothing) Then
            reader.Close()
         End If
      End Try
   End Sub
End Class

O exemplo usa o arquivo binary.xml


<data>
<!-- sample data for base64 and binhex -->
<Base64>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS
4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlp
eYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrL
zM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w
==</Base64>
<BinHex>000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041
42434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F6061626364
65666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F8081828384858687
88898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AA
ABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCD
CECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0
F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF</BinHex>
</data>

Comentários

Observação

A partir do .NET Framework 2.0, recomendamos que você crie XmlReader instâncias usando o XmlReader.Create método para aproveitar a nova funcionalidade.

Assim como ReadChars, esse método pode ser chamado sucessivamente para ler grandes fluxos de texto inserido. Ele decodifica o conteúdo base64 e retorna os bytes binários decodificados (por exemplo, uma imagem GIF codificada em Base64 embutida) no buffer. Consulte RFC 1521. (Você pode obter RFCs no site de Solicitação de Comentários.)

Aplica-se a

Confira também