Простой XML производный класс на основе атрибута - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть 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, в то время как Фактически загруженная реализация является одним из производных классов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...