XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.