2011-07-17 50 views
3

我有幾個XSD文件,我使用XJC處理來生成Java類。JAXB:如何知道在有多個XSD時解組到哪個Java類?

我想讀取任意XML文件,並根據XML文件的內容將其轉換爲生成的Java類之一。

是否可以在不檢查XML本身的內容的情況下執行此操作,並讓JAXB框架完成所有工作?

例如,假設我有以下XSD文件:

dog.xsd cat.xsd

我使用XJC生成Dog.java和Cat.java編譯它們。

我現在閱讀一些任意的XML,並根據它匹配的模式創建Dog或Cat的實例。

謝謝。

回答

4

XJC根據模式中的類型生成類,而不是模式本身。它將生成的類放入基於目標名稱空間的包中。如果將多個模式加載到JAXBContext中,它將自動解除正確的類型。這幾乎是JAXB的重點。如果您的兩個模式在同一個名稱空間中具有相同名稱的類型,則XJC將失敗。

+1

+1。儘管確保每個名稱空間都有自己的包,但是非常重要,否則package-info.java將被覆蓋,並且反編組將無法正常工作。 –

0

一個簡單的解決方案可能的工作是試圖解除其中一個,如果它沒事的話,那麼它是正確的,如果你得到一個異常,你應該使用第二個。

相關問題