XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Liest das Element und decodiert den Base64
-Inhalt.
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[]
Der Puffer, in den der resultierende Text kopiert werden soll. Dieser Wert darf nicht null
sein.
- index
- Int32
Der Offset im Puffer, an dem mit dem Kopieren des Ergebnisses begonnen werden soll.
- count
- Int32
Die maximale Anzahl von Bytes, die in den Puffer kopiert werden sollen. Diese Methode gibt die tatsächliche Anzahl von kopierten Bytes zurück.
Gibt zurück
Die Anzahl der in den Puffer geschriebenen Bytes.
Ausnahmen
Der buffer
-Wert ist null
.
Der aktuelle Knoten ist kein Elementknoten.
- oder -
Eine XmlReader-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.
Der Index im Puffer oder Index + Anzahl übersteigen die Größe des zugeordneten Puffers.
Die XmlReader-Implementierung unterstützt diese Methode nicht.
Das Element enthält gemischten Inhalt.
Der Inhalt kann nicht in den angeforderten Typ konvertiert werden.
Beispiele
Im folgenden Beispiel wird ein inlinecodiertes Base64
Bild gelesen. Die Base64
Daten werden in das <image>
-Element eingebettet. Ein BinaryWriter wird verwendet, um eine neue Binärdatendatei zu erstellen.
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
Hinweise
Diese Methode liest den Elementinhalt, decodiert ihn mithilfe der Base64
Codierung und gibt die decodierten Binärbytes (z. B. ein inlinecodiertes Base64
GIF-Bild) in den Puffer zurück. Weitere Informationen finden Sie unter RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanismen zum Angeben und Beschreiben des Formats von Internetnachrichtentexten". Sie können RFCs auf der Website "Kommentare anfordern" abrufen.
ReadElementContentAsBase64 kann nur Elemente mit einfachem Inhalt lesen. Das Element kann Text, Leerraum, signifikante Leerzeichen, CDATA-Abschnitte, Kommentare und Verarbeitungsanweisungen enthalten. Sie kann auch Entitätsverweise enthalten, die automatisch erweitert werden. Das Element kann keine untergeordneten Elemente aufweisen.
Diese Methode ist der Methode sehr ähnlich, mit der ReadContentAsBase64 Ausnahme, dass sie nur für Elementknotentypen aufgerufen werden kann.
Wenn der count
Wert höher als die Anzahl der Bytes im Dokument ist oder gleich der Anzahl der Bytes im Dokument ist, liest der XmlReader alle verbleibenden Bytes im Dokument und gibt die Anzahl der gelesenen Bytes zurück. Der nächste XmlReader Methodenaufruf gibt eine Null zurück und verschiebt den Leser auf den Knoten nach dem EndElement
.
Wenn Sie aufrufen Read , bevor der gesamte Elementinhalt verbraucht wird, verhält sich der Reader möglicherweise so, als ob der erste Inhalt genutzt und dann die Read -Methode aufgerufen wurde. Dies bedeutet, dass der Leser den gesamten Text liest, bis das Endelement gefunden wird. Anschließend liest er den Endpunktknoten, liest den nächsten Knoten und positioniert sich dann auf dem nächsten nachfolgenden Knoten.
Die asynchrone Version dieser Methode finden Sie unter ReadElementContentAsBase64Async.