XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Method

定義

要素を読み取り、Base64 の内容をデコードします。Reads the element and decodes the Base64 content.

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[]

結果として得られるテキストのコピー先のバッファー。The buffer into which to copy the resulting text. この値を null にすることはできません。This value cannot be null.

index
Int32 Int32 Int32 Int32

バッファー内の結果のコピー開始位置を示すオフセット。The offset into the buffer where to start copying the result.

count
Int32 Int32 Int32 Int32

バッファーにコピーする最大バイト数。The maximum number of bytes to copy into the buffer. コピーされた実際のバイト数は、このメソッドから返されます。The actual number of bytes copied is returned from this method.

戻り値

バッファーに書き込まれたバイト数。The number of bytes written to the buffer.

例外

buffer 値は null です。The buffer value is null.

現在のノードは要素ノードではありません。The current node is not an element node.

または-or-

先行の非同期操作が完了する前に、XmlReader メソッドが呼び出されました。An XmlReader method was called before a previous asynchronous operation finished. この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

バッファー内のインデックス、またはインデックスとカウントの合計値が、割り当てられているバッファー サイズを超えています。The index into the buffer or index + count is larger than the allocated buffer size.

XmlReader 実装が、このメソッドをサポートしていません。The XmlReader implementation does not support this method.

要素には混合コンテンツが含まれます。The element contains mixed-content.

コンテンツを要求された型に変換できません。The content cannot be converted to the requested type.

次の例では、読み取るインラインBase64エンコードされたイメージ。The following example reads an inline Base64 encoded image. Base64内にデータが埋め込まれて、<image>要素。The Base64 data is embedded within the <image> element. ABinaryWriter新しいバイナリ データ ファイルを作成するために使用します。A BinaryWriter is used to create a new binary data file.


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 'Base64DecodeImageFile

注釈

このメソッドは要素の内容をデコードを使用してBase64のエンコードとデコードされたバイナリ バイトを返します (たとえば、インラインBase64-GIF イメージのエンコードされた) バッファーにします。This method reads the element content, decodes it using Base64 encoding, and returns the decoded binary bytes (for example, an inline Base64-encoded GIF image) into the buffer. 詳細については、RFC 1521 を参照してください。"MIME (Multipurpose Internet Mail Extensions) パート 1。ためのメカニズムを指定して、Internet Message Bodies の形式を記述する"。For more information, see RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies". Rfc を取得することができます、コメントの Web サイトの要求します。You can obtain RFCs from the Request for Comments Web site.

ReadElementContentAsBase64 単純なコンテンツの要素を読み取るだけことができます。ReadElementContentAsBase64 can only read simple-content elements. 要素は、テキスト、空白、有意の空白、CDATA セクションでは、コメントおよび処理命令に含めることができます。The element can contain text, white space, significant white space, CDATA sections, comments and processing instructions. または自動的に展開されるエンティティ参照を含めることもできます。It can also contain entity references, which are automatically expanded. 要素は、子要素を含めることはできません。The element cannot have child elements.

このメソッドとよく似ています、ReadContentAsBase64する点のメソッドは、要素ノードの種類でのみ呼び出すことができます。This method is very similar to the ReadContentAsBase64 method except that it can only be called on element node types.

場合、count値は、ドキュメント内のバイト数よりも大きく、ドキュメント内のバイト数と同じである場合、XmlReaderドキュメント内の残りのすべてのバイトを読み取り、読み取ったバイト数を返します。If the count value is higher than the number of bytes in the document, or if it is equal to the number of bytes in the document, the XmlReader reads all the remaining bytes in the document and returns the number of bytes read. XmlReaderメソッドの呼び出しは、0 を返し、次のノードは、リーダー、EndElementします。The next XmlReader method call returns a zero and moves the reader to the node following the EndElement.

呼び出す場合Readリーダーが最初のコンテンツが使用された場合、動作可能性がありますすべての要素のコンテンツを使用すると、前にし、Readメソッドが呼び出されました。If you call Read before all of the element content is consumed, the reader may behave as if the first content was consumed and then the Read method was called. これは、終了要素が出現するまでに、リーダーがすべてのテキストを読み取ることを意味します。This means that the reader will read all the text until the end element is encountered. これは、終了タグのノードを読み取る、次のノードを読み取るし、後続のノード上に自身を配置します。It will then read the end tag node, read the next node, and then position itself on the next subsequent node.

このメソッドの非同期バージョンを参照してください。ReadElementContentAsBase64Asyncします。For the asynchronous version of this method, see ReadElementContentAsBase64Async.

適用対象

こちらもご覧ください