我有幾個XSD文件,我使用XJC處理來生成Java類。JAXB:如何知道在有多個XSD時解組到哪個Java類?
我想讀取任意XML文件,並根據XML文件的內容將其轉換爲生成的Java類之一。
是否可以在不檢查XML本身的內容的情況下執行此操作,並讓JAXB框架完成所有工作?
例如,假設我有以下XSD文件:
dog.xsd cat.xsd
我使用XJC生成Dog.java和Cat.java編譯它們。
我現在閱讀一些任意的XML,並根據它匹配的模式創建Dog或Cat的實例。
謝謝。
我有幾個XSD文件,我使用XJC處理來生成Java類。JAXB:如何知道在有多個XSD時解組到哪個Java類?
我想讀取任意XML文件,並根據XML文件的內容將其轉換爲生成的Java類之一。
是否可以在不檢查XML本身的內容的情況下執行此操作,並讓JAXB框架完成所有工作?
例如,假設我有以下XSD文件:
dog.xsd cat.xsd
我使用XJC生成Dog.java和Cat.java編譯它們。
我現在閱讀一些任意的XML,並根據它匹配的模式創建Dog或Cat的實例。
謝謝。
XJC根據模式中的類型生成類,而不是模式本身。它將生成的類放入基於目標名稱空間的包中。如果將多個模式加載到JAXBContext中,它將自動解除正確的類型。這幾乎是JAXB的重點。如果您的兩個模式在同一個名稱空間中具有相同名稱的類型,則XJC將失敗。
一個簡單的解決方案可能的工作是試圖解除其中一個,如果它沒事的話,那麼它是正確的,如果你得到一個異常,你應該使用第二個。
+1。儘管確保每個名稱空間都有自己的包,但是非常重要,否則package-info.java將被覆蓋,並且反編組將無法正常工作。 –