Udostępnij za pośrednictwem


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

Definicja

Odczytuje element i dekoduje BinHex zawartość.

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

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

Int32

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 BinHex . Dane BinHex są osadzone w elemecie <image> . Element BinaryWriter służy do tworzenia nowego pliku danych binarnych.

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

Uwagi

Ta metoda odczytuje zawartość elementu, dekoduje ją przy użyciu BinHex kodowania i zwraca dekodowane bajty binarne (na przykład wbudowany obraz GIF zakodowany w tekście BinHex) do buforu.

Ta metoda 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 ReadContentAsBinHex 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 ReadElementContentAsBinHexAsync.

Dotyczy

Zobacz też