次の方法で共有


XmlTextReader.ReadBase64 メソッド

Base64 をデコードし、デコードされたバイナリ バイトを返します。

Public Function ReadBase64( _
   ByVal array() As Byte, _   ByVal offset As Integer, _   ByVal len As Integer _) As Integer
[C#]
public int ReadBase64(byte[] array,intoffset,intlen);
[C++]
public: int ReadBase64(unsigned chararray __gc[],intoffset,intlen);
[JScript]
public function ReadBase64(
   array : Byte[],offset : int,len : int) : int;

パラメータ

  • array
    テキストの内容が書き込まれるバッファとして機能する文字の配列。
  • offset
    メソッドがバッファへの書き込みを開始できる位置を指定する配列の、0 から始まるインデックス番号。
  • len
    バッファに書き込むバイト数。

戻り値

バッファに書き込まれたバイト数。

例外

例外の種類 条件
XmlException Base64 シーケンスが無効です。
ArgumentNullException array の値が null 参照 (Visual Basic では Nothing) です。
ArgumentOutOfRangeException offset < 0、または len < 0、または len > array.Length - offset

解説

ReadChars と同様に、このメソッドを連続して呼び出すと、埋め込みテキストの大量のストリームを読み取ることができます。このメソッドは、Base64 のコンテンツをデコードし、デコードされたバイナリ バイト (インライン Base64 エンコード GIF イメージなど) をバッファに返します。RFC 1521 を参照してください。RFC は、http://www.rfc-editor.org にある Request for Comments の Web サイトから取得できます。

使用例

[Visual Basic, C#, C++] Base64 データおよび BinHex データを格納しているファイルを読み取る例を次に示します。

 
Option Explicit
Option Strict

Imports System
Imports System.IO
Imports System.Xml
Imports Microsoft.VisualBasic

Public Class Sample
   Private Const filename As String = "binary.xml"
   
   
   Public Shared Sub Main()
      Dim reader As XmlTextReader = Nothing
      Dim i As Integer

      Try
         reader = New XmlTextReader(filename)
         reader.WhitespaceHandling = WhitespaceHandling.None         

         ' Read the file. Stop at the Base64 element.         
         While reader.Read()
            If "Base64" = reader.Name Then
               Exit While
            End If
         End While 

         ' Read the Base64 data. Write the decoded 
         ' bytes to the console.
         Console.WriteLine("Reading base64... ")
         Dim base64len As Integer = 0
         Dim base64(1000) As Byte
         Do
            base64len = reader.ReadBase64(base64, 0, 50)
            For i = 0 To base64len - 1
               Console.Write(base64(i))
            Next i
         Loop While (reader.Name = "Base64")

         ' Read the BinHex data. Write the decoded 
         ' bytes to the console.
         Console.WriteLine(ControlChars.CrLf & "Reading binhex....")
         Dim binhexlen As Integer = 0
         Dim binhex(1000) As Byte
         binhexlen = reader.ReadBinHex(binhex, 0, 50)
         Do
            binhexlen = reader.ReadBinHex(binhex, 0, 50)
            For i = 0 To binhexlen - 1
               Console.Write(binhex(i))
            Next i
         Loop While (reader.Name = "BinHex") 
      
      Finally
         Console.WriteLine()
         Console.WriteLine("Processing of the file {0} complete.", filename)
         If Not (reader Is Nothing) Then
            reader.Close()
         End If
      End Try
   End Sub 'Main 
End Class 'Sample

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample {

  private const string filename = "binary.xml";

  public static void Main() {

     XmlTextReader reader = null;

     try {
     
        reader = new XmlTextReader(filename);
        reader.WhitespaceHandling = WhitespaceHandling.None;

        // Read the file. Stop at the Base64 element.
        while (reader.Read()) {
           if ("Base64" == reader.Name) break;
        }
            
        // Read the Base64 data. Write the decoded 
        // bytes to the console.
        Console.WriteLine("Reading Base64... ");
        int base64len = 0;
        byte[] base64 = new byte[1000];
        do {
           base64len = reader.ReadBase64(base64, 0, 50);            
           for (int i=0; i < base64len; i++) Console.Write(base64[i]);
        } while (reader.Name == "Base64");
    
        // Read the BinHex data. Write the decoded 
        // bytes to the console.
        Console.WriteLine("\r\nReading BinHex...");
        int binhexlen = 0;
        byte[] binhex = new byte[1000];
        do {
           binhexlen = reader.ReadBinHex(binhex, 0, 50);            
           for (int i=0; i < binhexlen; i++) Console.Write(binhex[i]);
        }  while (reader.Name == "BinHex");
            
     }

     finally {
        Console.WriteLine();
        Console.WriteLine("Processing of the file {0} complete.", filename);
        if (reader != null)
          reader.Close();
     }
  }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main() {

   XmlTextReader* reader = 0;
   String* filename = S"binary.xml";

   try {

      reader = new XmlTextReader(filename);
      reader->WhitespaceHandling = WhitespaceHandling::None;

      // Read the file. Stop at the Base64 element.
      while (reader->Read()) {
         if (S"Base64"->Equals(reader->Name)) break;
      }

      // Read the Base64 data. Write the decoded 
      // bytes to the console.
      Console::WriteLine(S"Reading Base64... ");
      int base64len = 0;
      Byte base64[] = new Byte[1000];
      do {
         base64len = reader->ReadBase64(base64, 0, 50);            
         for (int i=0; i < base64len; i++) Console::Write(base64[i]);
      } while (reader->Name->Equals(S"Base64"));

      // Read the BinHex data. Write the decoded 
      // bytes to the console.
      Console::WriteLine(S"\r\nReading BinHex...");
      int binhexlen = 0;
      Byte binhex[] = new Byte[1000];
      do {
         binhexlen = reader->ReadBinHex(binhex, 0, 50);            
         for (int i=0; i < binhexlen; i++) Console::Write(binhex[i]);
      }  while (reader->Name->Equals(S"BinHex"));

   }

   __finally {
      Console::WriteLine();
      Console::WriteLine(S"Processing of the file {0} complete.",filename);
      if (reader != 0)
         reader->Close();
   }
}

[Visual Basic, C#, C++] このサンプルでは、ファイル binary.xml を使用しています。

<data>
<!-- sample data for base64 and binhex -->
<Base64>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS
4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlp
eYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrL
zM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w
==</Base64>
<BinHex>000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041
42434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F6061626364
65666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F8081828384858687
88898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AA
ABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCD
CECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0
F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF</BinHex>
</data>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

XmlTextReader クラス | XmlTextReader メンバ | System.Xml 名前空間 | WriteBase64