XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
要素を読み取り、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
バッファーにコピーする最大バイト数。 コピーされた実際のバイト数は、このメソッドから返されます。
戻り値
バッファーに書き込まれたバイト数。
例外
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。