У меня есть XML, который выглядит следующим образом:
<Root>
<BaseClass xsi:type="DerivedClass1">
<!-- some elements -->
</BaseClass>
<BaseClass xsi:type="DerivedClass2">
<!-- some elements -->
</BaseClass>
<BaseClass xsi:type="DerivedClass1">
<!-- some elements -->
</BaseClass>
<!-- etc... -->
</Root>
Мой Root класс выглядит следующим образом:
@Root
public class Root {
@ElementListUnion({
@ElementList(name = "DerivedClass1", entry = "DerivedClass1", inline = true, type = DerivedClass1.class),
@ElementList(name = "DerivedClass2", entry = "DerivedClass2", inline = true, type = DerivedClass2.class),
})
ArrayList<BaseClass> BaseClass;
Базовый класс имеет несколько элементов, которые находятся в все производные классы. DerivedClass1
и DerivedClass2
оба расширяют BaseClass
и имеют некоторые дополнительные элементы.
Когда BaseClass
имеет все атрибуты DerivedClass1
и DerivedClass2
, синтаксический анализ работает нормально. Однако в текущей реализации я получаю следующую ошибку:
Элемент 'BaseClass' не соответствует в классе Root
Есть ли способ указать тег как BaseClass
, в то время как Фактически загруженная реализация является одним из производных классов?