XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
öğ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
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 Base64
kodlanmış 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 EndElement
düğü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. .