XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Legge l'elemento e decodifica il BinHex contenuto.
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
Parametri
- buffer
- Byte[]
Buffer in cui copiare il testo risultante. Questo valore non può essere null.
- index
- Int32
Offset nel buffer in cui iniziare a copiare il risultato.
- count
- Int32
Numero massimo di byte da copiare nel buffer. Il numero effettivo di byte copiati viene restituito da questo metodo.
Valori restituiti
Numero di byte scritti nel buffer.
Eccezioni
Il valore buffer è null.
Il nodo corrente non è un nodo elemento.
oppure
È stato chiamato un XmlReader metodo prima del completamento di un'operazione asincrona precedente. In questo caso, InvalidOperationException viene generata con il messaggio "Un'operazione asincrona è già in corso".
L'indice nel buffer o nell'indice + conteggio è maggiore della dimensione del buffer allocata.
L'implementazione XmlReader non supporta questo metodo.
L'elemento contiene contenuto misto.
Il contenuto non può essere convertito nel tipo richiesto.
Esempio
Nell'esempio seguente viene letta un'immagine codificata inline BinHex . I BinHex dati sono incorporati all'interno dell'elemento <image> . Viene BinaryWriter utilizzato per creare un nuovo file di dati binari.
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
Commenti
Questo metodo legge il contenuto dell'elemento, lo decodifica usando BinHex la codifica e restituisce i byte binari decodificati (ad esempio, un'immagine GIF con codifica inline BinHex) nel buffer.
Questo metodo può leggere solo elementi di contenuto semplice. L'elemento può contenere testo, spazi vuoti, spazi vuoti significativi, sezioni CDATA, commenti ed istruzioni di elaborazione. Può anche contenere riferimenti all'entità, che vengono espansi automaticamente. L'elemento non può avere elementi figlio.
Questo metodo è molto simile al metodo, ad eccezione del ReadContentAsBinHex fatto che può essere chiamato solo sui tipi di nodo dell'elemento.
Se il count valore è maggiore del numero di byte nel documento o se è uguale al numero di byte nel documento, XmlReader legge tutti i byte rimanenti nel documento e restituisce il numero di byte letti. La chiamata al metodo successivo XmlReader restituisce zero e sposta il lettore nel nodo che segue .EndElement
Se si chiama Read prima che venga utilizzato tutto il contenuto dell'elemento, il lettore può comportarsi come se il primo contenuto fosse utilizzato e quindi Read il metodo è stato chiamato. Ciò significa che il lettore leggerà tutto il testo fino a quando non viene rilevato l'elemento finale. Leggerà quindi il nodo del tag finale, leggerà il nodo successivo e quindi si posizionerà sul nodo successivo.
Per la versione asincrona di questo metodo, vedere ReadElementContentAsBinHexAsync.