Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

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

 

Publicado: octubre de 2016

Lee el elemento y descodifica el contenido de Base64.

Espacio de nombres:   System.Xml
Ensamblado:  System.Xml (en System.Xml.dll)

public virtual int ReadElementContentAsBase64(
	byte[] buffer,
	int index,
	int count
)

Parámetros

buffer
Type: System.Byte[]

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

index
Type: System.Int32

Posición de desplazamiento en el búfer donde debe comenzar la copia del resultado.

count
Type: System.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.

Valor devuelto

Type: System.Int32

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

Exception Condition
ArgumentNullException

El valor de buffer es null.

InvalidOperationException

El nodo actual no es un nodo de elemento.

ArgumentOutOfRangeException

El índice en el búfer o el índice + recuento es mayor que el tamaño de búfer asignado.

NotSupportedException

El XmlReader implementación no admite este método.

XmlException

El elemento contiene contenido mixto.

FormatException

El contenido no se puede convertir al tipo solicitado.

InvalidOperationException

Una XmlReader se llamó el método antes de que termine una operación asincrónica anterior. En este caso, InvalidOperationException se produce con el mensaje "una operación asincrónica ya está en curso".

Este método lee el contenido del elemento, descodifica mediante Base64 de codificación y devuelve los bytes binarios descodificados (por ejemplo, una en línea Base64-imagen GIF codificada) en el búfer. Para obtener más información, vea RFC 1521, "MIME (Multipurpose Internet Mail Extensions) parte uno: mecanismos para especificar y describir el formato de cuerpos de mensaje de Internet". Puede obtener RFC en el Request for Comments Web site.

ReadElementContentAsBase64 sólo se puede leer elementos de contenido simple. El elemento puede contener texto, espacios en blanco, espacio en blanco significativo, secciones CDATA, comentarios y las instrucciones de procesamiento. También puede contener referencias a entidades, que se expanden automáticamente. El elemento no puede tener elementos secundarios.

Este método es muy similar a la ReadContentAsBase64 método excepto en que sólo se puede llamar en tipos de nodo de elemento.

Si el count valor es mayor que el número de bytes en el documento, o si es igual al número de bytes en el documento, el XmlReader lee todos los bytes restantes del documento y devuelve el número de bytes leídos. La próxima XmlReader llamada al método devuelve un cero y desplaza el lector al siguiente nodo del EndElement.

Si se llama a Read antes de que se consume todo el contenido del elemento, el lector puede comportarse como si el primer contenido se hubiese consumido y, a continuación, el Read se llamó al método. Esto significa que el lector lee todo el texto hasta que se encuentra el elemento final. A continuación, se lee el nodo de etiqueta de cierre, lee el nodo siguiente y, a continuación, se sitúa en el siguiente nodo.

Para obtener la versión asincrónica de este método, consulte ReadElementContentAsBase64Async.

En el ejemplo siguiente se lee un elemento incorporado Base64 imagen codificada. El Base64 datos se incrustan en el <image> elemento. Un BinaryWriter se utiliza 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();
  }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: