我有一个 Java 应用程序,我想将数据保存在 XML 而不是数据库中。
我们决定使用 JAXB,而不是基于模式生成文件,我们只是向 Java 文件添加注释。
我们遇到的问题是我们有一个名为 Node 的抽象类的 ArrayList。 Node 有 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
}
关于java - 在 JAXB 中编码抽象类的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087809/