2010-01-18 72 views
1

我有一個Java應用程序,我想將數據保存在XML而不是數據庫。JAXB抽象類的編組arraylist

我們決定使用JAXB,而不是根據模式生成文件,而是將註釋添加到我們的Java文件中。

我們遇到的問題是我們有一個名爲Node的抽象類的ArrayList。節點具有Module或ScreenImage的子類。當我們編組數據列表時,它不保存類型。如:

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

JAXB是否支持抽象的元素?

我該如何獲得JAXB來保存類型,以便我可以解組它?

回答

3

它應該工作正常。 請注意,如果您的ModuleScreenImage不是靜態可從綁定類(即JAXBContext.newInstance(...)中指定的類)訪問,則應明確綁定它們(將它們添加到JAXBContext.newInstance(...)參數中)。

+0

這是它。我認爲newInstance只是爲了根源。謝謝! – mdamman 2010-01-18 18:11:42

7

axtavt的建議很好。我只想添加另一種方法。您可以使用@XmlSeeAlso,您可以在其中聲明應該爲JAXBContext定義和可見的其他類。您只需確保在JAXBContext已經可見的類中聲明註釋。

例如爲:

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