Compartir vía


XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Método

Definición

Lee el elemento y descodifica el contenido de 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

Parámetros

buffer
Byte[]

Búfer donde se va a copiar el texto resultante. Este valor no puede ser null.

index
Int32

Posición de desplazamiento en el búfer donde debe comenzar la copia del 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 a partir de este método.

Devoluciones

Int32

Número de bytes escritos en el búfer.

Excepciones

El valor buffer es null.

El nodo actual no es un nodo de elemento.

o bien

Se llamó un método XmlReader antes de que se termine una operación asincrónica anterior. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.

El índice del búfer (index) o la suma del índice y el recuento (index + count) es mayor que el tamaño de búfer asignado.

La implementación de XmlReader no admite este método.

El elemento contiene un contenido mixto.

El contenido no puede convertirse en el 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 binarios.


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 Base64imagen GIF insertada codificada) 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, espacios en blanco, espacios en blanco significativos, secciones 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 a Read 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 llamara 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.

Se aplica a

Consulte también