XmlReader.ReadElementContentAsBase64(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.
Odczytuje element i dekoduje Base64
zawartość.
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
Parametry
- buffer
- Byte[]
Bufor, do którego ma być skopiowany wynikowy tekst. Ta wartość nie może być wartością null
.
- index
- Int32
Przesunięcie do buforu, w którym należy rozpocząć kopiowanie wyniku.
- count
- Int32
Maksymalna liczba bajtów do skopiowania do buforu. Rzeczywista liczba skopiowanych bajtów jest zwracana z tej metody.
Zwraca
Liczba bajtów zapisanych w buforze.
Wyjątki
Wartość elementu buffer
to null
.
Bieżący węzeł nie jest węzłem elementu.
-lub-
Metoda XmlReader została wywołana przed zakończeniem poprzedniej operacji asynchronicznej. W takim przypadku InvalidOperationException jest zgłaszany komunikat "Operacja asynchroniczna jest już w toku".
Indeks do buforu lub indeksu + liczba jest większy niż przydzielony rozmiar buforu.
Implementacja XmlReader nie obsługuje tej metody.
Element zawiera zawartość mieszaną.
Nie można przekonwertować zawartości na żądany typ.
Przykłady
Poniższy przykład odczytuje wbudowany obraz zakodowany w tekście Base64
. Dane Base64
są osadzone w elemecie <image>
. Element BinaryWriter służy do tworzenia nowego pliku danych binarnych.
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
Uwagi
Ta metoda odczytuje zawartość elementu, dekoduje ją przy użyciu Base64
kodowania i zwraca dekodowane bajty binarne (na przykład wbudowany obraz GIF zakodowany w tekście Base64
) do buforu. Aby uzyskać więcej informacji, zobacz RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies" (Wielozadaniowe rozszerzenia poczty internetowej). Dokumenty RFC można uzyskać z witryny internetowej Żądania komentarzy.
ReadElementContentAsBase64 może odczytywać tylko elementy prostej zawartości. Element może zawierać tekst, biały znak, istotne białe znaki, sekcje CDATA, komentarze i instrukcje przetwarzania. Może również zawierać odwołania do jednostek, które są automatycznie rozwijane. Element nie może mieć elementów podrzędnych.
Ta metoda jest bardzo podobna ReadContentAsBase64 do metody, z tą różnicą, że może być wywoływana tylko w typach węzłów elementów.
count
Jeśli wartość jest większa niż liczba bajtów w dokumencie lub jeśli jest równa liczbie bajtów w dokumencie, XmlReader odczytuje wszystkie pozostałe bajty w dokumencie i zwraca liczbę odczytanych bajtów. Następne XmlReader wywołanie metody zwraca zero i przenosi czytnik do węzła następującego po .EndElement
Jeśli wywołasz wywołanie Read przed użyciem całej zawartości elementu, czytnik może zachowywać się tak, jakby pierwsza zawartość została zużyta, a następnie Read została wywołana metoda. Oznacza to, że czytnik odczyta cały tekst do momentu napotkania elementu końcowego. Następnie odczytuje węzeł tagu końcowego, odczytuje następny węzeł, a następnie pozycjonuje się w następnym kolejnym węźle.
Aby uzyskać asynchroniczną wersję tej metody, zobacz ReadElementContentAsBase64Async.