XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) 方法

定义

读取元素并对 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

参数

buffer
Byte[]

结果文本复制到的缓冲区。 此值不能为 null

index
Int32

缓冲区中的偏移,从这个位置开始将结果复制到缓冲区中。

count
Int32

要复制到缓冲区的最大字节数。 此方法返回复制的实际字节数。

返回

Int32

写入缓冲区的字节数。

例外

buffer 值为 null

当前节点不是元素节点。

  • 或 -

在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”

缓冲区中的索引或者索引与计数之和大于分配的缓冲区大小。

XmlReader 实现不支持此方法。

该元素包含混合内容。

无法将内容转换成请求的类型。

示例

以下示例读取内联 BinHex 编码的图像。 数据 BinHex 嵌入到元素中 <image> 。 A BinaryWriter 用于创建新的二进制数据文件。

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

注解

此方法读取元素内容,使用 BinHex 编码解码它,并返回解码的二进制字节 (例如内联 BinHex编码的 GIF 图像) 缓冲区。

此方法只能读取简单内容元素。 该元素可以包含文本、空白、重大空白、CDATA 节、注释和处理指令。 它还可以包含自动展开的实体引用。 该元素不能有子元素。

此方法与该方法非常相似 ReadContentAsBinHex ,只不过只能在元素节点类型上调用此方法。

count如果该值高于文档中的字节数,或者如果该值等于文档中的字节数,则XmlReader读取文档中的所有剩余字节并返回读取的字节数。 下一 XmlReader 个方法调用返回零,并将读取器移动到后面的 EndElement节点。

如果在使用所有元素内容之前调用 Read ,则读取器的行为可能类似于使用第一个内容,然后 Read 调用了该方法。 这意味着读取器将读取所有文本,直到遇到结束元素。 然后,它将读取结束标记节点、读取下一个节点,然后将自身定位在下一个后续节点上。

有关此方法的异步版本,请参阅 ReadElementContentAsBinHexAsync

适用于

另请参阅