XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přečte prvek a dekóduje BinHex
obsah.
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[]
Vyrovnávací paměť, do které chcete zkopírovat výsledný text. Tato hodnota nemůže být null
.
- index
- Int32
Posun do vyrovnávací paměti, kde začít kopírovat výsledek.
- count
- Int32
Maximální počet bajtů, které se mají zkopírovat do vyrovnávací paměti. Skutečný počet bajtů zkopírovaných z této metody se vrátí.
Návraty
Počet bajtů zapsaných do vyrovnávací paměti.
Výjimky
Hodnota buffer
je null
.
Aktuální uzel není uzel elementu.
-nebo-
XmlReader Metoda byla volána před dokončením předchozí asynchronní operace. V tomto případě InvalidOperationException se vyvolá zpráva "Asynchronní operace už probíhá".
Index do vyrovnávací paměti nebo indexu + počet je větší než přidělená velikost vyrovnávací paměti.
Implementace tuto metodu XmlReader nepodporuje.
Prvek obsahuje smíšený obsah.
Obsah nelze převést na požadovaný typ.
Příklady
Následující příklad přečte vložený BinHex
kódovaný obrázek. Data BinHex
jsou vložena do elementu <image>
. A BinaryWriter slouží k vytvoření nového binárního datového souboru.
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
Poznámky
Tato metoda přečte obsah elementu, dekóduje ho pomocí BinHex
kódování a vrátí dekódované binární bajty (například vložený BinHex
obrázek GIF s kódováním) do vyrovnávací paměti.
Tato metoda může číst pouze prvky jednoduchého obsahu. Prvek může obsahovat text, prázdné znaky, významné prázdné znaky, oddíly CDATA, komentáře a pokyny ke zpracování. Může také obsahovat odkazy na entity, které se automaticky rozbalí. Prvek nemůže obsahovat podřízené prvky.
Tato metoda je velmi podobná metodě s tím rozdílem ReadContentAsBinHex , že lze volat pouze u typů uzlů elementů.
count
Pokud je hodnota vyšší než počet bajtů v dokumentu nebo se rovná počtu bajtů v dokumentu, XmlReader přečte všechny zbývající bajty v dokumentu a vrátí počet bajtů přečtených bajtů. Další XmlReader volání metody vrátí nulu a přesune čtenáře na uzel za EndElement
uzlu .
Pokud zavoláte Read před spotřebou veškerého obsahu elementu, může se čtenář chovat, jako kdyby byl první obsah spotřebován a pak Read byla volána metoda. To znamená, že čtenář přečte celý text, dokud se nezobrazí koncový prvek. Pak přečte uzel koncové značky, přečte další uzel a pak se umístí na další další uzel.
Asynchronní verze této metody naleznete v tématu ReadElementContentAsBinHexAsync.