次の方法で共有


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

定義

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

public:
 virtual int ReadElementContentAsBinHex(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBinHex (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBinHex : byte[] * int * int -> int
override this.ReadElementContentAsBinHex : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBinHex (buffer As Byte(), index As Integer, count As Integer) As Integer

パラメーター

buffer
Byte[]

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

index
Int32

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

count
Int32

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

戻り値

Int32

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

例外

buffer 値は null です。

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

  • または -

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

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

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

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

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

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

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();
  }
}
Public Shared Sub BinHexDecodeImageFile() 
    
    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 BinHex data.
            Console.WriteLine(vbCr + vbLf + "Reading BinHex...")
            Dim bw As New BinaryWriter(outputFile)
            readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
            While (readBytes > 0)
                bw.Write(buffer, 0, readBytes)
                readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
            End While
            outputFile.Close()
        
    End Using

End Sub

注釈

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

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

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

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

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

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

適用対象

こちらもご覧ください