5

XSDファイルのセットがあり、次のタイプが記述されています。

Aは、さまざまな要素を持つ複合型です。BはAを制限し、その要素の一部のみを保持します。CはBを拡張し、いくつかの要素を追加します。

つまり、これは、XMLスキーマのタイプCを使用するツールによって生成されたJavaクラスには、Bによって保持されるAのメンバーと、Cによって追加された新しいメンバーのみが含まれると予想されることを意味します。

さらに困難にするために、Bは実際にいくつかの要素のminOccurs属性を変更します。

これを処理できるフレームワークはありますか?私はEMFを試しましたが、制限はコードにも反映されていません。

4

3 に答える 3

4

CastorCodeGeneratorを使用します。いいね。http://www.castor.org/reference/html-single/index.html#xml.code.generator.examples.non-trivialを参照してください

于 2010-11-21T19:28:09.460 に答える
2

複雑な XSD を使用する場合、私はXMLBeansで最良の結果を得ました。

  • XML スキーマを完全にサポートしています。
  • これは、私が使用しなければならなかった複雑な xml スキーマの正しいコードを生成できる唯一のフレームワークでした。

もう 1 つの非常に便利な機能は次のとおりです。

XML インスタンスをアンマーシャリングすると、完全な XML 情報セットが保持され、開発者が利用できます。XML のサブセットは Java では簡単に表現できないため、これは非常に重要です。たとえば、特定のアプリケーションでは、要素またはコメントの順序が必要になる場合があります。

于 2010-11-26T12:01:48.573 に答える
2

別の選択肢があります (いずれかを選択できます): Axis2 DataBinding Framework (ADB) は、型階層とカスタム制限をサポートしています。

長所: 完全なスキーマ構造を生成し、各要素からゲッターとセッターを実装します。すべてのタイプのセッターで y はスキーマで定義された制限をチェックし、設定する値が制限と一致しない場合は (独自の set メソッドで) 例外をスローし、シリアライゼーション/デシリアライゼーションのために StAX をサポートします。

短所: 生成されたコードは少し冗長になりすぎる可能性があり、検証の例外は説明が少なすぎます。「単純」であることを意図しており (複雑な型の拡張や制限があると、問題が発生する可能性があります)、ADB との依存関係がいくつか含まれています。ライブラリ (つまり、生成された Bean は org.apache.axis2.databinding.ADBBean インターフェースを実装します)。

于 2010-11-22T12:34:40.607 に答える