XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.