XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee el elemento y descodifica el Base64 contenido.
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
Parámetros
- buffer
- Byte[]
Búfer en el que se va a copiar el texto resultante. Este valor no puede ser null.
- index
- Int32
Desplazamiento en el búfer donde empezar a copiar el resultado.
- count
- Int32
Número máximo de bytes que se van a copiar en el búfer. El número real de bytes copiados se devuelve de este método.
Devoluciones
Número de bytes escritos en el búfer.
Excepciones
El valor de buffer es null.
El nodo actual no es un nodo de elemento.
O bien
Se llamó a un XmlReader método antes de que finalice una operación asincrónica anterior. En este caso, InvalidOperationException se produce con el mensaje "Una operación asincrónica ya está en curso".
El índice en el búfer o índice + recuento es mayor que el tamaño del búfer asignado.
La XmlReader implementación no admite este método.
El elemento contiene contenido mixto.
El contenido no se puede convertir al tipo solicitado.
Ejemplos
En el ejemplo siguiente se lee una imagen codificada en línea Base64 . Los Base64 datos se incrustan en el <image> elemento .
BinaryWriter Se usa para crear un nuevo archivo de datos binario.
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
Comentarios
Este método lee el contenido del elemento, lo descodifica mediante Base64 codificación y devuelve los bytes binarios descodificados (por ejemplo, una imagen GIF codificada en línea Base64) en el búfer. Para obtener más información, vea RFC 1521, "MIME (Extensiones multipropósito de correo de Internet) Parte Uno: Mecanismos para especificar y describir el formato de los cuerpos de mensajes de Internet". Puede obtener RFC del sitio web Solicitud de comentarios.
ReadElementContentAsBase64 solo puede leer elementos de contenido simple. El elemento puede contener texto, espacio en blanco, espacios en blanco significativos, secciones de CDATA, comentarios e instrucciones de procesamiento. También puede contener referencias de entidad, que se expanden automáticamente. El elemento no puede tener elementos secundarios.
Este método es muy similar al ReadContentAsBase64 método, excepto que solo se puede llamar a en tipos de nodo de elemento.
Si el count valor es mayor que el número de bytes del documento, o si es igual al número de bytes del documento, XmlReader lee todos los bytes restantes del documento y devuelve el número de bytes leídos. La siguiente XmlReader llamada al método devuelve un cero y mueve el lector al nodo que sigue a EndElement.
Si llama Read a antes de que se consuma todo el contenido del elemento, el lector puede comportarse como si se consuma el primer contenido y, a continuación, se llamó al Read método . Esto significa que el lector leerá todo el texto hasta que se encuentre el elemento final. A continuación, leerá el nodo de etiqueta final, leerá el siguiente nodo y, a continuación, se colocará en el siguiente nodo posterior.
Para obtener la versión asincrónica de este método, vea ReadElementContentAsBase64Async.