Javaで進化するXMLスキーマを処理するには? Java アプリケーションで古い XML スキーマと進化中の XML スキーマのセットをサポートする必要があるユース ケースがあります (つまり、Foo v1、v2、v3、v4、v5 をサポートします)。
私の使用例には、異なるバージョンの Foo XML スキーマに対して記述されたすべての Foo XML コンテンツを読み取ること、異なるバージョンの OVAL XML スキーマを使用して異なる方法で記述できる Foo XML コンテンツをマージすること (つまり、Foo v1 と Foo v5 をマージすること) が含まれます。
Foo XML スキーマはかなり複雑で、既知の後方互換性の問題があるため、Foo v1 XML コンテンツが Foo v3 XML スキーマを使用した XML スキーマ検証に失敗する可能性があります。
私は 2 つのアプローチを考えました。1) JAXB などの Java XML データバインディングを使用し、XML スキーマの各バージョンのバインディングのセットを生成します。例として Foo XML スキーマを使用して、Foo XML スキーマ v1 から v5 の 5 セットのバインディングを生成します。課題は、あるバージョンの Foo XML コンテンツを別のバージョンの XML コンテンツとマージする方法です。
2) Java データ モデルのセットを 1 つ作成し、SAX、DOM、JDOM を使用して手動で解析し、下位互換性の問題をすべて解決しようとします。課題は、JAXB の助けを借りずに自分で XML を解析しなければならないことです。
進化する XML スキーマを処理するための最善の方法について、アドバイスをいただきたいと思います。Java XML データ バインディングは正しい道なのか、それとも独自の Java データ モデルを作成して手動で解析するのか?