我下面就如何使用Eclipse鏈接莫西到我的XML節點轉換成我的模型類this official example,所以我有下面的Java代碼:放置位置jaxb.properties當我的POJO是分散在許多不同的包
byte[] bytes = getBytesIn("AW33.xml");
Element rootnode = ConversionTool.byteArrayToDOMElement(bytes);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String bindingsFileName = ConversionTool.getBindingsFileName(rootnode);
InputStream iStream = classLoader.getResourceAsStream("conversion/bindings/" + bindingsFileName);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, iStream);
Class<?> messageClass = ConversionTool.getMessageClass(rootnode);
JAXBContext ctx = JAXBContext.newInstance(new Class[]{messageClass}, properties);
像許多其他開發人員一樣,我遇到了麻煩,你必須創建一個jaxb.properties
文件來支持屬性eclipselink.oxm.metadata-source
。
如果我放在完全相同的包這個文件(但在/ src目錄/主/資源)作爲我的messageClass
它的作品,否則我得到了著名的錯誤:
javax.xml.bind.JAXBException: property "eclipselink.oxm.metadata-source" is not supported
的事情是,我的模型類分佈在包的層次,例如:
a.b.c1
a.b.c2
a.b.c3
如果我把它放在最遠的普通包裝,即a.b
這是行不通的。
那麼我在哪裏放置這個文件是這種情況?
或者在這種情況下是否有更好的方法來創建JAXBContext?
我意識到這一點,但我有幾百子包,我確定我要處理動態其中JAXB類,所以我不得不把一個jaxb.properties文件下的每個子包的。但這似乎不是一件非常聰明的事情。 我發現,如果我創建共同包下一個空的類,ieab,例如Dummy.java,我傳遞類一起到newInstance()方法,它作爲一個工作四處找jaxb.properties在/ SRC /主/資源/ A/b。 –