2

JAXB を介して Java ValueObject クラスをマーシャリング/アンマーシャリングしようとしています。

そのためには、ant によって自動作成される XML スキーマ ファイルと ObjectFactory クラスが必要であることがわかりました。

だとすれば、XML SchemaファイルとObjectFactoryは自動で作成できるので、マーシャリング/アンマーシャリングは不要のようです。

しかし、私が調査した限り、どういうわけかJAXBはその方法を提供していません。

それを行う方法を知っていますか?

4

3 に答える 3

2

JAXB はスキーマを必要とせず、Java オブジェクトから開始するように設計されています。次に注釈を追加して、XML へのマッピングをカスタマイズします。以下は、開始するのに役立ついくつかの例です。

Java オブジェクトで始まるその他の JAXB の例については、私のブログを参照してください。

于 2010-12-22T12:47:01.110 に答える
0

私は JAXB の専門家ではありませんが、このコンストラクターを使用してアンマーシャラーを作成できます。

編集-申し訳ありませんが間違ったコードxD

JAXBContext jaxbContext = JAXBContext.newInstance(Class1.class, Class2.class, ...);
Marshaller marshaller = jaxbContext.createMarshaller();

この質問では

Weblogic Server で JAXB アンマーシャリングを使用する

XML のアンマーシャルで weblogic JAX-RPC 自動生成クラスを使用していることがわかります。ObjectFactory はありません。これは私にとっては機能します...属性なしです。JAXBはリフレクションを使用してこれを行うと思います。このコンストラクターで非整列化を試みてください。解決策でない場合は、注釈を使用してください (Blaise リンクをたどってください)。ValueObject クラスを変更できない場合は、構成を考えてください。

于 2010-12-24T10:13:54.470 に答える
0

私の意見では、あなたの理解は部分的に正しいです。Java ValueObject クラスから開始する場合、スキーマは必要ありません。Blaise が指摘した例を参照できます。ただし、ValueObject クラスが提供されない場合もあります。代わりに、xml スキーマ定義が提供されます。したがって、あなたが言うようにANTを使用すると....xmlスキーマからValueObjectクラスを生成できます。

したがって、反復するには、あなたの場合、既に ValueObject があるため、スキーマは必要ありません

于 2010-12-24T02:15:05.667 に答える