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

定義

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

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

結果として得られるテキストのコピー先のバッファー。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.

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

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 イメージ) をバッファーに返します。This method reads the element content, decodes it using BinHex encoding, and returns the decoded binary bytes (for example, an inline BinHex-encoded GIF image) into the buffer.

このメソッドは、単純コンテンツの要素のみを読み取ることができます。This method 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.

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

値がドキュメント内のバイト数よりも大きい場合、またはドキュメント内のバイト数と等しい場合、はXmlReaderドキュメント内の残りのすべてのバイトを読み取り、読み取ったバイト数を返します。 countIf 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のメソッド呼び出しはゼロを返し、リーダーをに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.

このメソッドの非同期バージョンについてはReadElementContentAsBinHexAsync、「」を参照してください。For the asynchronous version of this method, see ReadElementContentAsBinHexAsync.

適用対象

こちらもご覧ください