13

jaxb で次の質問が可能かどうかはわかりませんが、とにかく質問します。

あるプロジェクトでは、スキーマが定義された jaxb を使用して、xml ファイルの次の構造を作成しています。

<aaa>
     <bbb>
        more inner children here
     </bbb>
     <bbb>
        more inner children here
     </bbb>
</aaa>

また、クラスを作成する jaxb の自動クラス生成を使用しています: aaa とbbb。aaa は @XmlRootElement として生成されます。

以前のプロジェクトと互換性がある新しいプロジェクトで同じスキーマを使用したいと考えています。私がやりたいのは、単一の bbb オブジェクトのみを xml にマーシャリングするために、スキーマを変更せずに同じ jaxb 生成クラスを使用することです。

JAXBContext jc = JAXBContext.newInstance("generated");
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(bbb, writer);

したがって、次の結果が得られます。

 <bbb>
    <inner child1/>
    <inner child2/>
    ...
 </bbb>

@XmlRootElement が定義されていないとマーシャラーが叫ぶため、現在はそうすることができません。

実際には、スキーマを 2 つのスキーマに分離するケースを回避しようとしています。1 つは bbb のみで、もう 1 つは aaa が bbb をインポートします。

前もって感謝します!

4

2 に答える 2