Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

XmlReader.ReadElementContentAsBinHex-Methode: (Byte[], Int32, Int32)

 

Veröffentlicht: Oktober 2016

Liest das Element und decodiert den BinHex-Inhalt.

Namespace:   System.Xml
Assembly:  System.Xml (in System.Xml.dll)

public virtual int ReadElementContentAsBinHex(
	byte[] buffer,
	int index,
	int count
)

Parameter

buffer
Type: System.Byte[]

Der Puffer, in den der resultierende Text kopiert werden soll. Dieser Wert darf nicht null sein.

index
Type: System.Int32

Der Offset im Puffer, an dem mit dem Kopieren des Ergebnisses begonnen werden soll.

count
Type: System.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.

Rückgabewert

Type: System.Int32

Die Anzahl der in den Puffer geschriebenen Bytes.

Exception Condition
ArgumentNullException

Der buffer-Wert ist null.

InvalidOperationException

Der aktuelle Knoten ist kein Elementknoten.

ArgumentOutOfRangeException

Der Index in den Puffer oder Index + Count ist größer als die Größe des reservierten Puffers.

NotSupportedException

Die XmlReader Implementierung dieser Methode nicht unterstützt.

XmlException

Das Element enthält gemischten Inhalt.

FormatException

Der Inhalt kann nicht in den angeforderten Typ konvertiert werden.

InvalidOperationException

Eine XmlReader Methode wurde aufgerufen, bevor der vorherige asynchroner Vorgang abgeschlossen. In diesem Fall InvalidOperationException wird ausgelöst, mit der Meldung "ein asynchroner Vorgang ist bereits in Bearbeitung."

Diese Methode liest den Elementinhalt, decodiert ihn mithilfe der BinHex -Codierung und gibt die decodierten binären Bytes (z. B. für ein Inline BinHex-codiertes GIF-Bild) in den Puffer.

Diese Methode kann nur Elemente mit einfachem Inhalt lesen. Das Element kann es sich um Text, Leerraum, signifikanter Leerraum, CDATA-Abschnitte, Kommentare und verarbeitungsanweisungen enthalten. Es kann auch Entitätsverweise enthalten, die automatisch erweitert werden. Das Element kann nicht über untergeordnete Elemente verfügen.

Diese Methode ähnelt der ReadContentAsBinHex Methode, aber sie können nur für Elementknotentypen aufgerufen werden.

Wenn der count Wert ist größer als die Anzahl der Bytes im Dokument oder gleich der Anzahl der Bytes im Dokument ist die XmlReader liest alle verbleibenden Bytes im Dokument und gibt die Anzahl der gelesenen Bytes zurück. Der nächste XmlReader Methodenaufruf gibt 0 zurück, und verschiebt den Reader auf den Knoten hinter dem EndElement.

Beim Aufrufen Read vor alle Elementinhalt verbraucht ist, kann der Reader so, als ob der erste Inhalt verbraucht und anschließend die Read Methode wurde aufgerufen. Dies bedeutet, dass der Reader den gesamten Text bis zum Endelement liest. Es wird dann lesen den Knoten am Endtag, den nächsten Knoten lesen, und positionieren Sie selbst auf dem nächsten folgenden Knoten.

Die asynchrone Version dieser Methode finden Sie unter ReadElementContentAsBinHexAsync.

Das folgende Beispiel liest eine Inline BinHex codiertes Bild. Die BinHex Daten eingebettet ist die <image> Element. Ein BinaryWriter wird verwendet, um eine neue binäre Datei 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();

  }
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: