XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Method

Definición

Lee el elemento y descodifica el contenido de BinHex.Reads the element and decodes the BinHex content.

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 donde se va a copiar el texto resultante.The buffer into which to copy the resulting text. Este valor no puede ser null.This value cannot be null.

index
Int32 Int32 Int32 Int32

Posición de desplazamiento en el búfer donde debe comenzar la copia del resultado.The offset into the buffer where to start copying the result.

count
Int32 Int32 Int32 Int32

Número máximo de bytes que se van a copiar en el búfer.The maximum number of bytes to copy into the buffer. El número real de bytes copiados se devuelve a partir de este método.The actual number of bytes copied is returned from this method.

Devoluciones

Número de bytes escritos en el búfer.The number of bytes written to the buffer.

Excepciones

El nodo actual no es un nodo de elemento.The current node is not an element node.

o bien-or-

Se llamó un método XmlReader antes de que se termine una operación asincrónica anterior.An XmlReader method was called before a previous asynchronous operation finished. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

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.The index into the buffer or index + count is larger than the allocated buffer size.

La implementación de XmlReader no admite este método.The XmlReader implementation does not support this method.

El elemento contiene un contenido mixto.The element contains mixed-content.

El contenido no puede convertirse en el tipo solicitado.The content cannot be converted to the requested type.

Ejemplos

En el ejemplo siguiente se lee una BinHex imagen codificada insertada.The following example reads an inline BinHex encoded image. Los BinHex datos se incrustan dentro <image> del elemento.The BinHex data is embedded within the <image> element. BinaryWriter Se usa para crear un nuevo archivo de datos binarios.A BinaryWriter is used to create a new binary data file.

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 en línea BinHexcodificada) en el búfer.This method reads the element content, decodes it using BinHex encoding, and returns the decoded binary bytes (for example, an inline BinHex-encoded GIF image) into the buffer.

Este método solo puede leer elementos de contenido simple.This method can only read simple-content elements. El elemento puede contener texto, espacio en blanco, espacio en blanco significativo, secciones CDATA, comentarios e instrucciones de procesamiento.The element can contain text, white space, significant white space, CDATA sections, comments and processing instructions. También puede contener referencias de entidad, que se expanden automáticamente.It can also contain entity references, which are automatically expanded. El elemento no puede tener elementos secundarios.The element cannot have child elements.

Este método es muy similar al ReadContentAsBinHex método, salvo que solo se puede llamar en tipos de nodo de elemento.This method is very similar to the ReadContentAsBinHex method except that it can only be called on element node types.

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, el XmlReader Lee todos los bytes restantes del documento y devuelve el número de bytes leídos.If the count value is higher than the number of bytes in the document, or if it is equal to the number of bytes in the document, the XmlReader reads all the remaining bytes in the document and returns the number of bytes read. La siguiente XmlReader llamada al método devuelve un cero y mueve el lector al nodo que EndElementsigue a.The next XmlReader method call returns a zero and moves the reader to the node following the EndElement.

Si llama a Read antes de que se consuma todo el contenido del elemento, el lector puede comportarse como si se consumiera el Read primer contenido y, a continuación, se llamó al método.If you call Read before all of the element content is consumed, the reader may behave as if the first content was consumed and then the Read method was called. Esto significa que el lector leerá todo el texto hasta que se encuentre el elemento final.This means that the reader will read all the text until the end element is encountered. A continuación, leerá el nodo de etiqueta final, leerá el siguiente nodo y, a continuación, se colocará en el siguiente nodo siguiente.It will then read the end tag node, read the next node, and then position itself on the next subsequent node.

Para obtener la versión asincrónica de este método, vea ReadElementContentAsBinHexAsync.For the asynchronous version of this method, see ReadElementContentAsBinHexAsync.

Se aplica a

Consulte también: