У меня есть модель этого класса:
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.
Кто-нибудь знает, как это решить?
Edit:
В качестве дополнительного вопроса - как вы используете код / декодирование java.util.Map с Jibx? Я знаю, что это не может быть сделано изначально (был бы рад опровергнуть!), Но что бы вы сделали, чтобы закодировать Map (без строк). Обратите внимание, что мы не используем jibx-extras.jar, поэтому решения не должны полагаться на него.