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

Definição

Lê o elemento e decodifica o BinHex conteúdo.

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 onde copiar o texto resultante. Este valor não pode ser null.

index
Int32

O deslocamento para o buffer onde começar a copiar o resultado.

count
Int32

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

Devoluções

O número de bytes escritos no buffer.

Exceções

O buffer valor é null.

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

-ou-

Um XmlReader método era chamado antes de uma operação assíncrona anterior terminar. Neste caso, InvalidOperationException é lançado com a mensagem "Uma operação assíncrona já está em curso."

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

A XmlReader implementação não suporta este método.

O elemento contém conteúdo misto.

O conteúdo não pode ser convertido para o tipo solicitado.

Exemplos

O exemplo seguinte lê uma imagem codificada em linha BinHex . Os BinHex dados estão incorporados no <image> elemento. A BinaryWriter é usado para criar um novo ficheiro de dados binário.

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

Observações

Este método lê o conteúdo do elemento, descodifica-o usando BinHex codificação e devolve os bytes binários decodificados (por exemplo, uma imagem GIF codificada em linha BinHex) para o buffer.

Este método só pode ler elementos de conteúdo simples. O elemento pode conter texto, espaços em branco, espaços em branco significativos, secções CDATA, comentários e instruções de processamento. Também pode conter referências de entidades, que são automaticamente expandidas. O elemento não pode ter elementos filhos.

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

Se o count valor for superior ao número de bytes no documento, ou se for igual ao número de bytes no documento, lê XmlReader todos os bytes restantes no documento e devolve o número de bytes lidos. A próxima XmlReader chamada ao método devolve um zero e move o leitor para o nó que segue o EndElement.

Se chamar Read antes de todo o conteúdo elemental ser consumido, o leitor pode comportar-se como se o primeiro conteúdo tivesse sido consumido e depois o Read método tivesse sido chamado. Isto significa que o leitor vai ler todo o texto até encontrar o elemento final. Depois lê o nó da etiqueta final, lê o nó seguinte e posiciona-se no nó seguinte.

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

Aplica-se a

Ver também