我们有一个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)。 –
非常感谢 –