英語で読む

次の方法で共有


XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) メソッド

定義

要素を読み取り、Base64 の内容をデコードします。

C#
public virtual int ReadElementContentAsBase64(byte[] buffer, int index, int count);

パラメーター

buffer
Byte[]

結果として得られるテキストのコピー先のバッファー。 この値を null にすることはできません。

index
Int32

バッファー内の結果のコピー開始位置を示すオフセット。

count
Int32

バッファーにコピーする最大バイト数。 コピーされた実際のバイト数は、このメソッドから返されます。

戻り値

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

例外

buffer 値は null です。

現在のノードは要素ノードではありません。

- または -

先行の非同期操作が完了する前に、XmlReader メソッドが呼び出されました。 この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。

バッファー内のインデックス、またはインデックスとカウントの合計値が、割り当てられているバッファー サイズを超えています。

XmlReader 実装が、このメソッドをサポートしていません。

要素には混合コンテンツが含まれます。

コンテンツを要求された型に変換できません。

次の例では、インライン Base64 でエンコードされたイメージを読み取ります。 データは Base64 要素内に <image> 埋め込まれます。 BinaryWriterは、新しいバイナリ データ ファイルを作成するために使用されます。

C#

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();
  }
}

注釈

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

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

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

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

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

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

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください