私は現在、Maven JAXB プラグインに非常に複雑な Xml スキーマのセットのモデルを生成させることに取り組んでいます。すべてのスキーマが 1 つの Maven モジュールにあることから始めました。結果のモジュールは、その言語のドキュメントを解析できました。残念ながら、そのスキーマとモデルを別のモジュールにインポートする必要があったため、この 1 つのモジュールをいくつかのモジュールに分割する必要がありました。マルチスキーマ モジュールの場合、エピソード ファイルに問題があるようです。
たとえば、xml 形式の一般的な構造を定義し、基本的な型を定義する 1 つのスキーマがあります (それを A と呼びましょう)。現在、これらの基本型のサブタイプをそれぞれ実装する他のスキーマがいくつかあります (それらの 1 つを B と呼びましょう)。
B が A を拡張するようにモジュールを作成しました。残念ながら、ドキュメントを解析できなくなったようです。モジュール B で、A の ObjctFactory が作成され、B が A から拡張するすべての型の定義のみが含まれていることがわかります。他のすべての型はもう存在しません。
この ObjectFactory が存在する限り、ルート要素の定義が欠落しているため、何も解析できません。これを削除すると、B で定義されたすべての要素が結果のオブジェクト ツリーから失われます。
モジュール内の元の ObjectFactory をすべてのスキーマと比較すると、最初のバージョンには、どの要素が来る可能性があるかをパーサーに伝えるような「代替手段」が大量にあることがわかりました。分割バージョンではこれらが欠落しているため、B の部分的な ObjectFactory を削除すると、A の ObjectFactory が使用され、これは B の要素を認識しないと思います。
では、JAXB に A と B のすべての要素を解析させるにはどうすればよいでしょうか。ObjectFactory を拡張する方法はありますか? はいの場合、これはどのように行われますか?
次に問題を引き起こす可能性があるのは、A を拡張するスキーマがいくつかあるため、A、B、C、D、および E を含むドキュメントがあり、B、C、D、および E はすべて A を拡張しますが、それぞれにはまったく関係がないことです。他の。その場合、延長はオプションではないと思います。