XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Yöntem

Tanım

öğesini okur ve içeriğin kodunu Base64 çözer.

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

Parametreler

buffer
Byte[]

Sonuçta elde edilen metnin kopyalandığı arabellek. Bu değer olamaz null.

index
Int32

Sonucu kopyalamaya başlanacak arabelleğe uzaklık.

count
Int32

Arabelleğe kopyalanacak en fazla bayt sayısı. Kopyalanan gerçek bayt sayısı bu yöntemden döndürülür.

Döndürülenler

Int32

Arabelleğe yazılan bayt sayısı.

Özel durumlar

buffer değeri null olur.

Geçerli düğüm bir öğe düğümü değil.

-veya-

Önceki XmlReader bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

Arabelleğe veya dizin + sayım dizinine ayrılan arabellek boyutundan daha büyük.

Uygulama XmlReader bu yöntemi desteklemiyor.

öğesi karma içerik içeriyor.

İçerik istenen türe dönüştürülemez.

Örnekler

Aşağıdaki örnek, satır içi Base64 kodlanmış bir görüntüyü okur. Veriler Base64 öğesinin <image> içine eklenir. yeni BinaryWriter bir ikili veri dosyası oluşturmak için kullanılır.


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

Açıklamalar

Bu yöntem öğe içeriğini okur, kodlama kullanarak Base64 kodunu çözer ve çözülen ikili baytları (örneğin, satır içi Base64kodlanmış GIF görüntüsü) arabelleğe döndürür. Daha fazla bilgi için bkz. RFC 1521, "MIME (Çok Amaçlı İnternet Posta Uzantıları) Birinci Bölüm: İnternet İleti Gövdelerinin Biçimini Belirtme ve Açıklama Mekanizmaları". RFC'leri Açıklama İsteği web sitesinden alabilirsiniz.

ReadElementContentAsBase64 yalnızca basit içerik öğelerini okuyabilir. öğesi metin, boşluk, önemli boşluk, CDATA bölümleri, açıklamalar ve işleme yönergeleri içerebilir. Ayrıca otomatik olarak genişletilen varlık başvuruları da içerebilir. öğesinin alt öğeleri olamaz.

Bu yöntem yöntemine ReadContentAsBase64 çok benzer, ancak yalnızca öğe düğümü türlerinde çağrılabilir.

count Değer belgedeki bayt sayısından yüksekse veya belgedeki bayt sayısına eşitse, XmlReader belgedeki kalan tüm baytları okur ve okunan bayt sayısını döndürür. Sonraki XmlReader yöntem çağrısı sıfır döndürür ve okuyucuyu aşağıdaki EndElementdüğüme taşır.

Tüm öğe içeriği tüketilmeden önce çağrısı Read yaparsanız, okuyucu ilk içerik tüketilmiş ve yöntemi Read çağrılmış gibi davranabilir. Bu, okuyucunun son öğeyle karşılaşılana kadar tüm metni okuyacağı anlamına gelir. Ardından bitiş etiketi düğümünü okur, sonraki düğümü okur ve ardından kendisini sonraki düğüme yerleştirir.

Bu yöntemin zaman uyumsuz sürümü için bkz ReadElementContentAsBase64Async. .

Şunlara uygulanır

Ayrıca bkz.