DOMの代わりにストリームを使用しているため、xs:any要素のJAXB動作を変更する方法を探していました。巨大な(ギガバイト)データファイル/ストリームを処理できるようにする必要があります。JAXBバインディング - @XmlAnyElementで使用するDomHandlerを定義する方法
JAXBは、@ XmlAnyElementアノテーションを使用してanyプロパティを生成します。独自のストリーム実装を使用しているため、JAXBがanyプロパティを生成するのを避ける必要があります。しかし、JAXBバインディングにxs:any要素を無視するように指示することは不可能です。
このトピックについての私の現在の研究では、使用されるDomHandlerを書くことができるとわかりました。今、このDomHandlerは次のようになります場合:
StreamHandler implements DomHandler<MyStream, StreamResult>
我々は、次の当社生成されたクラスへのストリーム・ロジックを追加することなく、仕事をするために、このDomHandlerを使用することができます。これで、生成されたany-propertyを再利用できるようになりました。
@XmlAnyElement(StreamHandler.class)
を次のように
DomHandlerを設定する必要があります。しかし、私は、生成@XmlAnyElement注釈でこのDomHandlerを使用するXJB-ファイルを結合JAXBに定義することができますか?
編集:
私はこのrequestを提出し、この問題を解決するためにJAXBのmaven-pluginのアドオンを実装しました。このアドオンを基本アドオンバンドルに追加するように要求することができます。
ご返信いただきありがとうございます。あなたの提案の問題は、StreamHandlerを使用してDomHandlerを実装する場合、プロパティのタイプを変更する必要があることです。任意のプロパティの型は今T1になります。 getterメソッドとsetterメソッドのシグネチャも同様に調整する必要があり、アノテーションプラグインはこの作業を実行できません。 –
user498380