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 contenuto BinHex
.
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 a partire da 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.
Restituisce
Numero di byte scritti nel buffer.
Eccezioni
Il valore buffer
è null
.
Il nodo corrente non è un nodo elemento.
-oppure-
È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".
L'indice nel buffer oppure la somma di indice e numero è superiore alla dimensione del buffer allocato.
L'implementazione di XmlReader non supporta questo metodo.
L'elemento include contenuto misto.
Il contenuto non può essere convertito nel tipo richiesto.
Esempio
Nell'esempio seguente viene letto un'immagine codificata inline BinHex
. I BinHex
dati vengono incorporati all'interno dell'elemento <image>
. Viene BinaryWriter usato per creare un nuovo file di dati binario.
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, spazio vuoto, spazi vuoti significativi, sezioni CDATA, commenti ed istruzioni di elaborazione. Può anche contenere riferimenti alle entità, che vengono espansi automaticamente. L'elemento non può avere elementi figlio.
Questo metodo è molto simile al ReadContentAsBinHex metodo, ad eccezione del fatto che può essere chiamato solo sui tipi di nodi di elemento.
Se il count
valore è superiore al numero di byte nel documento o se è uguale al numero di byte nel documento, XmlReader il valore legge tutti i byte rimanenti nel documento e restituisce il numero di byte letti. La chiamata al metodo successivo XmlReader restituisce uno 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 è stato utilizzato e quindi il Read 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, legge il nodo successivo e quindi si posiziona sul nodo successivo.
Per la versione asincrona di questo metodo, vedere ReadElementContentAsBinHexAsync.