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
Максимальное количество байтов для копирования в буфер. Фактическое число скопированных байтов возвращается из этого метода.
Возвращаемое значение
Количество байтов, записанных в буфер.
Исключения
Значение 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 (многоцелевых расширений электронной почты) часть один: механизмы указания и описания формата теле сообщений Интернета". Вы можете получить RFC на веб-сайте запроса комментариев.
ReadElementContentAsBase64 может читать только элементы простого содержимого. Элемент может содержать текст, пробелы, значительные пробелы, разделы CDATA, комментарии и инструкции по обработке. Он также может содержать ссылки на сущности, которые автоматически развернуты. Элемент не может содержать дочерние элементы.
Этот метод очень похож на ReadContentAsBase64 метод, за исключением того, что его можно вызывать только в типах узлов элементов.
count Если значение выше числа байтов в документе или равно числу байтов в документе, XmlReader оно считывает все оставшиеся байты в документе и возвращает число байтов, считываемых в документе.
XmlReader Следующий вызов метода возвращает ноль и перемещает читателя на узел после EndElement.
Если вы вызываете Read все содержимое элемента, средство чтения может вести себя так, как если бы использовалось первое содержимое, а затем Read был вызван метод. Это означает, что средство чтения считывает весь текст до тех пор, пока не будет обнаружен конечный элемент. Затем он считывает узел конечного тега, считывает следующий узел, а затем позиционирует себя на следующем последующем узле.
Сведения об асинхронной версии этого метода см. в разделе ReadElementContentAsBase64Async.