XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.