XmlReader.ReadElementContentAsBase64(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 Base64
.
public:
virtual int ReadElementContentAsBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBase64 (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBase64 : byte[] * int * int -> int
override this.ReadElementContentAsBase64 : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBase64 (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 letta un'immagine codificata inline Base64
. I Base64
dati vengono incorporati all'interno dell'elemento <image>
. Un BinaryWriter oggetto viene usato per creare un nuovo file di dati binari.
public static void Base64DecodeImageFile() {
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 Base64 data.
Console.WriteLine("\r\nReading Base64...");
BinaryWriter bw = new BinaryWriter(outputFile);
while ((readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50))>0) {
bw.Write(buffer, 0, readBytes);
}
outputFile.Close();
}
}
Public Shared Sub Base64DecodeImageFile()
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 Base64 data.
Console.WriteLine(vbCr + vbLf + "Reading Base64...")
Dim bw As New BinaryWriter(outputFile)
readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
While (readBytes > 0)
bw.Write(buffer, 0, readBytes)
readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
End While
outputFile.Close()
End Using
End Sub
Commenti
Questo metodo legge il contenuto dell'elemento, lo decodifica usando Base64
la codifica e restituisce i byte binari decodificati (ad esempio, un'immagine GIF con codifica inline Base64
) nel buffer. Per altre informazioni, vedere RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Meccanismi per specificare e descrivere il formato dei corpi dei messaggi Internet". È possibile ottenere RFC dal sito Web Request for Comments .You can get rfcs from the Request for Comments web site.
ReadElementContentAsBase64 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 a entità, che vengono espansi automaticamente. L'elemento non può contenere elementi figlio.
Questo metodo è molto simile al metodo, ad eccezione del ReadContentAsBase64 fatto che può essere chiamato solo sui tipi di nodo 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 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 fosse 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, leggerà il nodo successivo e quindi si posizionerà sul nodo successivo.
Per la versione asincrona di questo metodo, vedere ReadElementContentAsBase64Async.