DOM の代わりにストリームを使用しているため、xs:any 要素の JAXB 動作を変更する方法を探していました。巨大な (ギガバイト) データ ファイル/ストリームを処理できる必要があります。
JAXB は @XmlAnyElement アノテーションを使用して any-properties を生成します。独自のストリーム実装を使用しているため、JAXB が any-property を生成しないようにする必要があります。ただし、JAXB バインディングに xs:any 要素を無視するように指示することは不可能のようです。
このトピックに関する現在の調査で、使用される DomHandler を作成できることがわかりました。この DomHandler が次のようになるとします。
StreamHandler implements DomHandler<MyStream, StreamResult>
この DomHandler を使用して、生成されたクラスの隣にストリーム ロジックを追加する必要なく、ジョブを実行できます。これで、生成された任意のプロパティを再利用できます。
DomHandler は次のように設定する必要があります。
@XmlAnyElement(StreamHandler.class)
しかし、生成された @XmlAnyElement アノテーションでこの DomHandler を使用するには、jaxb バインディング xjb-file でどのように定義すればよいでしょうか?
編集:
このリクエストを提出し、この問題を解決するために JAXB maven-plugin アドオンを実装しました。このアドオンを basics-addon バンドルに追加するようリクエストできます。