1

次の実装タスクがあり、それを解決する方法がわかりません。

一部の終了 endElement() でハッシュサムをチェックする xml 形式用のSAX ベースの構文チェッカーがあります。このハッシュサムは、コンテンツの読み取り中に MessageDigest を更新する一種のフィルタリング InputStreamを使用して構築されます。SAX-syntaxchecker は、この入力ストリームをその InputSource として使用します。

問題 (私の仕事) は、入力 xml の一部の正規化された部分に対してハッシュサムを構築する必要があることです( http://www.w3.org/TR/xml-c14nを参照)。

ここで注意が必要なのは、 SAX を使用して入力を正規化する Canonicalizer があることです。(属性とノードなどを区別するために現在のコンテキストを認識する必要があるため、SAX を使用します)

その Canonicalizer を再利用したいのですが、これら 2 つの SAX パーサーを組み合わせる方法がわかりません。

ある種のパイプラインが必要だと思います:

InputFile -> Canonicalizer -> HashCalculation-InputStream -> SyntaxChecker.

それを達成するためのアイデア/参考文献はありますか? ティア。

4

1 に答える 1

0

ハッシュ計算は入力ストリームから読み取るため、正規化の結果は最終的に入力ストリームとして提示される必要があります。PipedOutputStream に接続された PipedInputStream を使用するか、一時的なバイト配列に対して ByteArrayOutputStream / ByteArrayInputStream のペアを使用できます。

代わりに、パイプ ライニングを念頭に置いて 2 つのコンポーネントが設計されている場合は、 を使用しorg.xml.sax.XmlFilterて、キャノニカライザーからのイベントをハッシュ計算/構文チェッカーのハンドラーに接続できます。

于 2011-11-14T10:05:51.647 に答える