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

Definição

Lê o elemento e decodifica o conteúdo 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[]

O buffer para o qual o texto resultante será copiado. Este valor pode não ser null.

index
Int32

O deslocamento do buffer no qual o resultado começará a ser copiado.

count
Int32

O número máximo de bytes a serem copiados para o buffer. O número real de bytes copiados é retornado deste método.

Retornos

Int32

O número de bytes gravados no buffer.

Exceções

O valor buffer é null.

O nó atual não é um nó de elemento.

- ou -

Um método XmlReader foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.

O índice de buffer ou de índice + contagem é maior que o tamanho do buffer alocado.

A implementação XmlReader não dá suporte a esse método.

O elemento contém conteúdo misto.

Não é possível converter conteúdo no tipo solicitado.

Exemplos

O exemplo a seguir lê uma imagem codificada embutida BinHex . Os BinHex dados são inseridos no <image> elemento. Um BinaryWriter é usado para criar um novo arquivo de dados binários.

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

Comentários

Esse método lê o conteúdo do elemento, o decodifica usando BinHex codificação e retorna os bytes binários decodificados (por exemplo, uma imagem GIF codificada em linha BinHex) no buffer.

Esse método só pode ler elementos de conteúdo simples. O elemento pode conter texto, espaço em branco, espaço em branco significativo, seções CDATA, comentários e instruções de processamento. Ele também pode conter referências de entidade, que são expandidas automaticamente. O elemento não pode ter elementos filho.

Esse método é muito semelhante ao ReadContentAsBinHex método, exceto que ele só pode ser chamado em tipos de nó de elemento.

Se o count valor for maior que o número de bytes no documento ou se for igual ao número de bytes no documento, ele XmlReader lerá todos os bytes restantes no documento e retornará o número de bytes lidos. A próxima XmlReader chamada de método retorna um zero e move o leitor para o nó após o EndElement.

Se você chamar Read antes que todo o conteúdo do elemento seja consumido, o leitor poderá se comportar como se o primeiro conteúdo fosse consumido e, em seguida, o Read método fosse chamado. Isso significa que o leitor lerá todo o texto até que o elemento final seja encontrado. Em seguida, ele lerá o nó de marca final, lerá o próximo nó e, em seguida, posicionará-se no próximo nó subsequente.

Para obter a versão assíncrona deste método, consulte ReadElementContentAsBinHexAsync.

Aplica-se a

Confira também