XmlTextReader.ReadBase64(Byte[], Int32, Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Dekoduje wartość Base64 i zwraca zdekodowane bajty binarne.
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
Parametry
- array
- Byte[]
Tablica znaków, która służy jako bufor, do którego jest zapisywana zawartość tekstu.
- offset
- Int32
Indeks oparty na zera do tablicy określający, gdzie metoda może rozpocząć zapisywanie w buforze.
- len
- Int32
Liczba bajtów do zapisu w buforze.
Zwraca
Liczba bajtów zapisanych w buforze.
Wyjątki
Sekwencja Base64 jest nieprawidłowa.
Wartość array
to null
.
offset
< 0 lub len
< 0 lub len
> array
. Długość — offset
.
Przykłady
Poniższy przykład odczytuje plik zawierający dane Base64 i 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
Przykład używa pliku 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>
Uwagi
Uwaga
Począwszy od .NET Framework 2.0, zalecamy utworzenie XmlReader wystąpień przy użyciu metody , aby korzystać z XmlReader.Create nowych funkcji.
Podobnie jak ReadChars, ta metoda może być wywoływana kolejno, aby odczytywać duże strumienie osadzonego tekstu. Dekoduje zawartość Base64 i zwraca dekodowane bajty binarne (na przykład wbudowany obraz GIF zakodowany w formacie Base64) do buforu. Zobacz RFC 1521. (Możesz uzyskać rfCs z witryny sieci Web Żądania komentarzy).