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

Definition

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 in den 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. Die tatsächliche Anzahl der kopierten Bytes wird von dieser Methode zurückgegeben.

Gibt zurück

Die Anzahl der in den Puffer geschriebenen Bytes.

Ausnahmen

Der wert buffer ist null.

Der aktuelle Knoten ist kein Elementknoten.

-oder-

Eine XmlReader Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall InvalidOperationException wird die Meldung "Ein asynchroner Vorgang wird bereits ausgeführt" ausgelöst.

Der Index im Puffer oder index + Anzahl ist größer als die zugeordnete Puffergröße.

Diese Methode wird von der XmlReader Implementierung nicht unterstützt.

Das Element enthält gemischten Inhalt.

Der Inhalt kann nicht in den angeforderten Typ konvertiert werden.

Beispiele

Im folgenden Beispiel wird ein inlinecodiertes BinHex Bild gelesen. Die BinHex Daten werden in das <image> Element eingebettet. A 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, decodiert ihn mithilfe der BinHex Codierung und gibt die decodierten Binärbytes (z. B. ein inlinecodiertes BinHexGIF-Bild) in den Puffer zurück.

Diese Methode kann nur elemente mit einfachem Inhalt lesen. Das Element kann Text, Leerzeichen, signifikante Leerzeichen, CDATA-Abschnitte, Kommentare und Verarbeitungsanweisungen enthalten. Sie kann auch Entitätsverweise enthalten, die automatisch erweitert werden. Das Element darf keine untergeordneten Elemente haben.

Diese Methode ist der ReadContentAsBinHex Methode sehr ähnlich, mit der 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 Wert 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 nach dem EndElementKnoten.

Wenn Sie aufrufen Read , bevor alle Elementinhalte genutzt werden, verhält sich der Leser möglicherweise so, als ob der erste Inhalt genutzt wurde und dann die Read Methode aufgerufen wurde. Dies bedeutet, dass der Leser den gesamten Text vorliest, bis das Endelement gefunden wird. Anschließend liest er den Endtagknoten, liest den nächsten Knoten und positioniert sich dann auf dem nächsten nachfolgenden Knoten.

Die asynchrone Version dieser Methode finden Sie unter ReadElementContentAsBinHexAsync.

Gilt für:

Weitere Informationen