英語で読む

次の方法で共有


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

定義

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

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

パラメーター

buffer
Byte[]

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

index
Int32

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

count
Int32

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

戻り値

Int32

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

例外

buffer 値は null です。

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

  • または -

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

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

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

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

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

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

C#
public static void BinHexDecodeImageFile() {

  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 BinHex data.
        Console.WriteLine("\r\nReading BinHex...");
        BinaryWriter bw = new BinaryWriter(outputFile);
        while ((readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50))>0) {
            bw.Write(buffer, 0, readBytes);
        }
        outputFile.Close();
  }
}

注釈

このメソッドは、要素のコンテンツを読み取り、エンコードを使用して BinHex デコードし、デコードされたバイナリ バイト (インライン BinHexエンコード GIF イメージなど) をバッファーに返します。

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

このメソッドは、要素ノード型でのみ呼び出すことができる点を除いて、メソッドとよく似ています ReadContentAsBinHex

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

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

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

適用対象

製品 バージョン
.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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください