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

Definición

Lee el elemento y descodifica el contenido de BinHex.

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

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 BinHeximagen GIF insertada codificada) en el búfer.

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

Se aplica a

Consulte también