public abstract class Base {
@XmlAttribute
protected String type;
}
public class A extends Base{
@XmlAttribute
protected String color;
}
public class B extends Base{
@XmlAttribute
protected int someParam;
}
хочется замаппить это дело при помощи jaxb
пробовал через XmlAdapter<Object, Base>, но на входе получается ElementNSImpl, который разбирать вручную ну совсем не хочется.
в идеале хочется получить такое же поведение, как у Hibernate со стратегией SingleTable и полем discriminatorValue.
увы, во всех примерах описывается ситуация, когда для дочерних классов в иерархии используются разные имена тегов. В моём случае тег всегда называется одинаково, но у него есть атрибут, который определяет формат содержимого.
тоже не оч хорошо оказалось. во-первых, при генерации обязательно выставляет discriminatorValue. То есть, нельзя сопоставить отсутствие дискриминатора определённому типу. во-вторых, настраивается со скрипом. пока что генерит, но не парсит
Здравствуйте, and_hom, Вы писали:
_>увы, во всех примерах описывается ситуация, когда для дочерних классов в иерархии используются разные имена тегов. В моём случае тег всегда называется одинаково, но у него есть атрибут, который определяет формат содержимого.
Да, теперь понял. Jaxb в чистом виде не подойдёт. Если только взять исходники и переписать Marshaller / Unmarshaller чтобы он интерпретировал аннотации необходимым образом.
Лучше конечно попытаться упростить XML схему / модель данных.