XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Metode

Definisi

Membaca elemen dan mendekode Base64 konten.

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

Parameter

buffer
Byte[]

Buffer tempat menyalin teks yang dihasilkan. Nilai ini tidak boleh null.

index
Int32

Offset ke dalam buffer tempat untuk mulai menyalin hasilnya.

count
Int32

Jumlah maksimum byte yang akan disalin ke dalam buffer. Jumlah aktual byte yang disalin dikembalikan dari metode ini.

Mengembalikan

Jumlah byte yang ditulis ke buffer.

Pengecualian

Nilai buffer adalah null.

Simpul saat ini bukan simpul elemen.

-atau-

Metode XmlReader dipanggil sebelum operasi asinkron sebelumnya selesai. Dalam hal ini, InvalidOperationException dilemparkan dengan pesan "Operasi asinkron sudah berlangsung."

Indeks ke dalam buffer atau indeks + hitungan lebih besar dari ukuran buffer yang dialokasikan.

Implementasi XmlReader tidak mendukung metode ini.

Elemen berisi konten campuran.

Isi tidak dapat dikonversi ke tipe yang diminta.

Contoh

Contoh berikut membaca gambar yang dikodekan sebaris Base64 . Data Base64 disematkan dalam <image> elemen . BinaryWriter digunakan untuk membuat file data biner baru.


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

Keterangan

Metode ini membaca konten elemen, mendekodenya menggunakan Base64 pengodean, dan mengembalikan byte biner yang didekode (misalnya, gambar GIF yang dikodekan sebaris Base64) ke dalam buffer. Untuk informasi selengkapnya, lihat RFC 1521, "MIME (Ekstensi Surat Internet Multiguna) Bagian Satu: Mekanisme untuk Menentukan dan Menjelaskan Format Badan Pesan Internet". Anda dapat memperoleh RFC dari situs web Permintaan Komentar.

ReadElementContentAsBase64 hanya dapat membaca elemen konten sederhana. Elemen dapat berisi teks, spasi kosong, spasi kosong yang signifikan, bagian CDATA, komentar, dan instruksi pemrosesan. Ini juga dapat berisi referensi entitas, yang secara otomatis diperluas. Elemen tidak boleh memiliki elemen turunan.

Metode ini sangat mirip ReadContentAsBase64 dengan metode kecuali hanya dapat dipanggil pada jenis node elemen.

count Jika nilai lebih tinggi dari jumlah byte dalam dokumen, atau jika sama dengan jumlah byte dalam dokumen, XmlReader membaca semua byte yang tersisa dalam dokumen dan mengembalikan jumlah byte yang dibaca. Panggilan metode berikutnya XmlReader mengembalikan nol dan memindahkan pembaca ke simpul mengikuti EndElement.

Jika Anda memanggil Read sebelum semua konten elemen dikonsumsi, pembaca mungkin berulah seolah-olah konten pertama digunakan dan kemudian Read metode dipanggil. Ini berarti bahwa pembaca akan membaca semua teks sampai elemen akhir ditemui. Kemudian akan membaca simpul tag akhir, membaca simpul berikutnya, dan kemudian memposisikan dirinya pada simpul berikutnya.

Untuk versi asinkron dari metode ini, lihat ReadElementContentAsBase64Async.

Berlaku untuk

Lihat juga