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 デコードし、デコードされたバイナリ バイト (インライン Base64でエンコードされた GIF イメージなど) をバッファーに返します。 詳細については、RFC 1521「MIME (多目的インターネット メール拡張機能) パート 1: インターネット メッセージ本文の形式を指定および記述するためのメカニズム」を参照してください。 RFC は 、コメント要求 Web サイトから取得できます。

ReadElementContentAsBase64 では、単純コンテンツ要素のみを読み取ることができます。 要素には、テキスト、空白、重要な空白、CDATA セクション、コメント、および処理命令を含めることができます。 また、自動的に展開されるエンティティ参照を含めることもできます。 要素に子要素を含めることはできません。

このメソッドは、 メソッドと ReadContentAsBase64 よく似ていますが、要素ノード型でのみ呼び出すことができる点が異なります。

値が count ドキュメント内のバイト数より大きい場合、またはドキュメント内のバイト数と等しい場合、 はドキュメント内の残りのすべてのバイトを読み取り、 XmlReader 読み取られたバイト数を返します。 次 XmlReader のメソッド呼び出しは 0 を返し、 の後のノードにリーダーを EndElement移動します。

すべての要素コンテンツが使用される前に を呼び出 Read した場合、リーダーは最初のコンテンツが使用され、メソッド Read が呼び出されたかのように動作する可能性があります。 つまり、リーダーは end 要素が検出されるまで、すべてのテキストを読み取ります。 次に、終了タグ ノードを読み取り、次のノードを読み取り、次の後続のノードに自身を配置します。

このメソッドの非同期バージョンについては、「」を参照してください ReadElementContentAsBase64Async

適用対象

こちらもご覧ください