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

定义

读取元素并对 Base64 内容进行解码。

public:
 virtual int ReadElementContentAsBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBase64 (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBase64 : byte[] * int * int -> int
override this.ReadElementContentAsBase64 : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBase64 (buffer As Byte(), index As Integer, count As Integer) As Integer

参数

buffer
Byte[]

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

index
Int32

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

count
Int32

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

返回

Int32

写入缓冲区的字节数。

例外

buffer 值为 null

当前节点不是元素节点。

  • 或 -

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

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

XmlReader 实现不支持此方法。

该元素包含混合内容。

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

示例

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


public static void Base64DecodeImageFile() {

  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 Base64 data.
        Console.WriteLine("\r\nReading Base64...");
        BinaryWriter bw = new BinaryWriter(outputFile);
        while ((readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50))>0) {
            bw.Write(buffer, 0, readBytes);
        }
        outputFile.Close();
  }
}
Public Shared Sub Base64DecodeImageFile() 
    
    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 Base64 data.
            Console.WriteLine(vbCr + vbLf + "Reading Base64...")
            Dim bw As New BinaryWriter(outputFile)
            readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            While (readBytes > 0)
                bw.Write(buffer, 0, readBytes)
                readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            End While
            outputFile.Close()
        
    End Using

End Sub

注解

此方法读取元素内容,使用 Base64 编码解码它,并返回解码的二进制字节 (例如,内联 Base64编码的 GIF 图像) 缓冲区。 有关详细信息,请参阅 RFC 1521、“MIME (多用途 Internet 邮件扩展) 第一部分:指定和描述 Internet 邮件正文格式的机制”。 可以从 “注释请求”网站获取 RFC。

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

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

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

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

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

适用于

另请参阅