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

Definición

Lee el elemento y descodifica el BinHex contenido.

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

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 BinHex . Los BinHex datos se incrustan en el <image> elemento . BinaryWriter Se usa para crear un nuevo archivo de datos 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

Comentarios

Este método lee el contenido del elemento, lo descodifica mediante BinHex codificación y devuelve los bytes binarios descodificados (por ejemplo, una imagen GIF codificada en línea BinHex) en el búfer.

Este método 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 ReadContentAsBinHex 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 ReadElementContentAsBinHexAsync.

Se aplica a

Consulte también