0

タイトルはほとんどそれを言います。

これまでのところ、テキストファイルの SHA1 ハッシュを計算しています。通常の FileOutputStream を使用するだけで、.xml ファイルに書き込みます。

FileOutputStream fos = new FileOutputStream(out.xml);
fos.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>".getBytes());
fos.write("<Digest xmlns=\"http://testnamespace\"".getBytes());
fos.write(getFileHash("C:\\myfile.txt"));
fos.write("</Digest>".getBytes()); 
fos.flush(); 
fos.close();

xml を DOM として解析したい場合、渡す入力ファイルに応じて、「無効な Unicode 文字 0x06、0x1b」などの例外が常に発生します。

これまでに試したこと: ファイルストリーム用のさまざまなラッパー (例: PrintWriter) getBytes("UTF-8");

これに直面せずにこれらのハッシュをxmlに保存する方法を教えてください

ありがとうございました

4

1 に答える 1

2

getFileHashメソッドはバイナリデータ(byte []など)を返すと思います。ただし、XML はテキストであるため、任意のバイナリ データを入れることはできません。これを回避する 1 つの方法は、バイナリ データを文字に変換することです。たとえば、16 進エンコーディングまたは base64 エンコーディングを使用します。

また、さまざまなgetBytes()呼び出しは、UTF-8 である場合とそうでない場合があるプラットフォームのエンコーディングに従ってバイトを返します。エンコーディングを明示的に指定する方がはるかに安全です。

于 2013-04-27T18:08:11.167 に答える