私はこのクラスモデルを持っています:
abstract class A {
int a;
}
class B extends A {
int b;
}
class C extends B {
int c;
}
そして、この XML を出力するように jibx を取得したいと思います。
<B b=1 a=0>
<children>
<C c=2 b=1 a=0/>
</children>
</B>
私はこのバインディングxmlを持っています:
<binding>
<mapping class="A" abstract="true">
<value name="a" field="a" style="attribute" usage="optional"/>
<collection field="children" type="java.util.ArrayList"/>
</mapping>
<mapping name="B" class="B" extends="A">
<value name="b" field="b" style="attribute" usage="optional"/>
<structure map-as="A"/>
</mapping>
<mapping name="C" class="C" extends="B">
<value name="c" field="c" style="attribute" usage="optional"/>
<structure map-as="B"/>
</mapping>
</binding>
ただし、次のようなアーティファクトを取得し続けます。
<C c=2>
<B b=1 a=0>
<children>
...
</children>
</B>
</C>
一時的な解決策として、継承構造を AbstractB に変更し、B が AbstractB を拡張し、C が AbstractB を拡張するようにしましたが、jibx のためにクラスを再設計しなければならないのは本当に面倒です。
誰でもこれを解決する方法を知っていますか?
編集: おまけの質問として - java.util.Map を Jibx でコード/デコードするにはどうすればよいですか? ネイティブに実行できないことはわかっていますが (反証されてうれしいです!)、Map (文字列なし) をコーディングするにはどうすればよいでしょうか。私たちはjibx-extras.jarを使用していないので、ソリューションはこれに依存すべきではないことに注意してください。