XmlReader.ReadElementContentAsBinHex(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 BinHex
-Inhalt.
public:
virtual int ReadElementContentAsBinHex(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBinHex (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBinHex : byte[] * int * int -> int
override this.ReadElementContentAsBinHex : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBinHex (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 inline BinHex
codiertes Bild gelesen. Die BinHex
Daten werden innerhalb des <image>
Elements eingebettet. Eine BinaryWriter wird verwendet, um eine neue Binärdatendatei zu erstellen.
public static void BinHexDecodeImageFile() {
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 BinHex data.
Console.WriteLine("\r\nReading BinHex...");
BinaryWriter bw = new BinaryWriter(outputFile);
while ((readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50))>0) {
bw.Write(buffer, 0, readBytes);
}
outputFile.Close();
}
}
Public Shared Sub BinHexDecodeImageFile()
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 BinHex data.
Console.WriteLine(vbCr + vbLf + "Reading BinHex...")
Dim bw As New BinaryWriter(outputFile)
readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
While (readBytes > 0)
bw.Write(buffer, 0, readBytes)
readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
End While
outputFile.Close()
End Using
End Sub
Hinweise
Diese Methode liest den Elementinhalt, decodes sie mithilfe BinHex
von Codierung und gibt die dekodierten Binärbytes (z. B. ein inline-codiertes BinHex
GIF-Bild) in den Puffer zurück.
Diese Methode kann nur einfache Inhaltselemente lesen. Das Element kann Text, Leerzeichen, erhebliche Leerzeichen, CDATA-Abschnitte, Kommentare und Verarbeitungsanweisungen enthalten. Sie kann auch Entitätsbezüge enthalten, die automatisch erweitert werden. Das Element kann nicht über untergeordnete Elemente verfügen.
Diese Methode ähnelt der ReadContentAsBinHex Methode mit Ausnahme, dass sie nur auf Elementknotentypen aufgerufen werden kann.
Wenn der count
Wert höher als die Anzahl von Bytes im Dokument ist oder die Anzahl der Bytes im Dokument entspricht, liest die XmlReader gesamte verbleibende Bytes im Dokument, und gibt die Anzahl der Bytes zurück. Der nächste XmlReader Methodenaufruf gibt eine Null zurück und verschiebt den Leser nach dem EndElement
Knoten .
Wenn Sie vor dem Verbrauch aller Elementinhalte aufrufen Read , verhält sich der Leser möglicherweise so, als ob der erste Inhalt verbraucht wurde und dann die Read Methode aufgerufen wurde. Dies bedeutet, dass der Leser alle Texte liest, bis das Endelement aufgetreten ist. Anschließend wird der Endtagknoten gelesen, der nächste Knoten gelesen und dann auf dem nächsten nachfolgenden Knoten positioniert.
Eine asynchrone Version dieser Methode finden Sie unter ReadElementContentAsBinHexAsync.