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> элемент. Используется 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 кодировки и возвращает декодированные двоичные байты (например, встроенный Base64GIF-образ) в буфер. Дополнительные сведения см. в rfC 1521, "MIME (многоцелевых расширений электронной почты) Часть 1. Механизмы указания и описания формата текста сообщений Интернета". RfCs можно получить на веб-сайте "Запрос комментариев".

ReadElementContentAsBase64 может читать только элементы простого содержимого. Элемент может содержать текст, пробелы, значительные пробелы, разделы CDATA, комментарии и инструкции по обработке. Он также может содержать ссылки на сущности, которые автоматически расширяются. Элемент не может содержать дочерние элементы.

Этот метод очень похож на ReadContentAsBase64 метод, за исключением того, что его можно вызывать только в типах узлов элементов.

count Если значение превышает число байтов в документе или равно числу байтов в документе, XmlReader он считывает все оставшиеся байты в документе и возвращает число прочитанных байтов. Следующий XmlReader вызов метода возвращает ноль и перемещает средство чтения на узел после EndElement.

Если вы вызываете Read все содержимое элемента, средство чтения может вести себя так, как если бы использовалось первое содержимое, а затем Read был вызван метод. Это означает, что средство чтения будет считывать весь текст до тех пор, пока не будет обнаружен конечный элемент. Затем он считывает узел конечного тега, считывает следующий узел, а затем позиционирует себя на следующем последующем узле.

Асинхронная версия этого метода см. в разделе ReadElementContentAsBase64Async.

Применяется к

См. также раздел