我們有一個xml文件,我們需要解組(轉換爲Java對象)。現在Java對象是第三方的,我不能註釋它來取消編組。任何想法如何我可以unmarshal沒有註釋。請在下面找到我的代碼片段JAXB unmarshalling無註釋的自定義實體
JAXBContext context;
try {
context = JAXBContext.newInstance(Abc.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
Abc abc= (Abc) unMarshaller.unmarshal(new FileInputStream("C:\\Documents and Settings\\sandeep.nair\\Desktop\\abc.xml"));
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e){
}
我收到以下例外。一個沒有參數構造函數(我知道我可以通過添加適配器的註釋來解決這個問題,但我想知道或看到一個示例代碼片段來處理它,而沒有註釋)
同樣我收到另一個消息,因爲接口無法處理JAXB。
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:5個IllegalAnnotationExceptions的計數 java.sql.Timestamp沒有無參數默認構造函數。在公衆的java.sql.Timestamp com.test.Abc.getSomeTimestamp() 在com.riteaid.entities.customer.Customer com.test 在java.sql.Timestamp中 : 這個問題涉及到以下位置。 Def沒有一個無參數的默認構造函數。 此問題與以下位置有關: at com.test.Def ...
java.sql.Date沒有無參數默認構造函數。 此問題與以下位置有關: at java.sql.Date ... com.test.Ghi是一個接口,而JAXB無法處理接口。 此問題與以下位置有關: ... com.test.Ghi沒有無參數默認構造函數。 這個問題涉及到以下位置: ..
感謝布萊斯。所以你的意思是說我沒有選擇,要麼關於元數據的信息應該註釋或XML應該有屬性?除此之外,沒有其他選擇。我看到一個名爲setAdapter的方法,它接受一個Map。我不知道它會做什麼,或者它能否解決我的問題,以編程方式提供解組時所需的信息。 –
@SandeepNair - 'setAdapter'方法允許你在'Marshaller' /'Unmarshaller'上指定一個'XmlAdapter'的有狀態實例(例子見:http://blog.bdoughan.com/2011/09/混合嵌套和引用-with.html)。 –
非常感謝 –