在JAXB中编组抽象类的arraylist

mda*_*man 1 java jaxb

我有一个Java应用程序,我想用XML而不是数据库保存数据.

我们决定使用JAXB而不是基于模式生成文件,我们只是在Java文件中添加了注释.

我们遇到的问题是我们有一个名为Node的抽象类的ArrayList.Node具有Module或ScreenImage的子类.当我们编组arraylist时,它不会保存类型.如:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Module"
Run Code Online (Sandbox Code Playgroud)

JAXB是否支持抽象元素?

如何让JAXB保存类型,以便我可以解组它?

Grz*_*zki 7

axtavt的建议很好.我只想添加另一种方法.您可以使用@XmlSeeAlso,您可以在其中声明应该定义并对JAXBContext可见的其他类.您只需确保在JAXBContext已经可见的类中声明注释.

例如:

@XmlRootElement
@XmlSeeAlso({Node.class, Module.class, ScreenImage.class})
class SomeContent {
  private List<Node> nodes;
  ///... accessors
}
Run Code Online (Sandbox Code Playgroud)