繁体   English   中英

在JAXB中封送抽象类的arraylist

[英]Marshalling arraylist of abstract class in JAXB

我有一个Java应用程序,希望将数据保存为XML而不是数据库。

我们决定使用JAXB,而不是根据模式生成文件,而是将注释添加到了Java文件中。

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

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Module"

JAXB是否支持抽象元素?

如何获取JAXB来保存类型,以便能够将其解组?

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

例如:

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

它应该工作正常。 请注意,如果从绑定的类(即JAXBContext.newInstance(...)指定的类)不能静态访问您的ModuleScreenImage ,则应将它们显式绑定(将它们添加到JAXBContext.newInstance(...)参数中) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM