これは、JAXBバインディングファイルを本当に理解している人にとっては簡単だと思います...
基本的な質問
複数の要素を同じクラスに非整列化するように JAXB をどのように構成しますか?
注: プロジェクトに別の依存関係 (MOXy など) を追加することは避けたいと思います。理想的には、これは注釈またはカスタム バインディング ファイルを使用して実現できます。
バックグラウンド
同じ要素のさまざまなバリエーション (それぞれがまったく同じプロパティを持つ) を含む XML ドキュメントがあります。以下の例を使用すると、気になるのは「従業員」だけですが、XML では「取締役、マネージャー、およびスタッフ」が指定されています。私たちの目的では、これらはすべて同じ親のサブクラスであり、親タイプ (Employee) のみを操作する必要があり、オブジェクト モデルにはサブクラスのインスタンスがなく、必要ありません。
director, manager, or staff
要素の任意のインスタンスをオブジェクトにバインドするように JAXB が必要ですEmployee
。
例
入力:
<organization>
<director>
<fname>Dan</fname>
<lname>Schman</lname>
</director>
<manager>
<fname>Joe</fname>
<lname>Schmo</lname>
</manager>
<staff>
<fname>Ron</fname>
<lname>Schwan</lname>
</staff>
<staff>
<fname>Jim</fname>
<lname>Schwim</lname>
</staff>
<staff>
<fname>Jon</fname>
<lname>Schwon</lname>
</staff>
</organization>
出力:
この例をアンマーシャリングすると、Organization
1 つのプロパティを持つオブジェクトになります。List<Employees> employees
各従業員には firstName と lastName しかありません。
(注意: 各従業員はEmployee
NOT型Director/Manager/Staff
になります。非マーシャリング時にサブクラス情報が失われます。また、マーシャリングのバックアウトについても気にしません。XML からオブジェクトを作成するだけで済みます。)
これは、MOXy のような拡張機能なしで実行できますか? カスタム bindings.xjb ファイルで問題を解決できますか?