我有这个班级模型:
abstract class A {
int a;
}
class B extends A {
int b;
}
class C extends B {
int c;
}
我想让 jibx 输出这个 XML:
<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,因此解决方案不应依赖它。