JAXB不带注释地解组自定义实体

JAXB不带注释地解组自定义实体,jaxb,jaxb2,jaxb2-basics,Jaxb,Jaxb2,Jaxb2 Basics,我们有一个xml文件,需要对其进行解组(转换为Java对象)。现在,Java对象是第三方的,我无法对其进行注释以进行解组。你知道我如何在没有注释的情况下解组吗。请在下面找到我的代码片段 JAXBContext context; try { context = JAXBContext.newInstance(Abc.class); Unmarshaller unMarshaller = context.createUnmarshall

我们有一个xml文件,需要对其进行解组(转换为Java对象)。现在,Java对象是第三方的,我无法对其进行注释以进行解组。你知道我如何在没有注释的情况下解组吗。请在下面找到我的代码片段

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次illegalannotationException计数 java.sql.Timestamp没有无参数默认构造函数。 此问题与以下位置有关: 在java.sql.Timestamp 在public java.sql.Timestamp com.test.Abc.getSomeTimestamp()上 访问com.riteaid.entities.customer.customer com.test.Def没有无参数默认构造函数。 此问题与以下位置有关: 在com.test.Def

java.sql.Date没有无参数默认构造函数。 此问题与以下位置有关: 在java.sql.Date ... Ghi是一个接口,JAXB不能处理接口。 此问题与以下位置有关: ... com.test.Ghi没有无参数默认构造函数。 此问题与以下位置有关:
..

注意:我是专家组的负责人和成员

JAXB是异常配置,因此您只需要在希望覆盖默认映射行为的位置添加注释:

提供元数据的标准方法是通过注释。在无法注释的情况下,例如第三方类,您可能会对MOXy的外部映射文档扩展感兴趣

您可以使用
XmlAdapter
来处理
javax.sql.Date
javax.sql.Timestamp
类型:


谢谢布莱斯。那么你的意思是说我没有选择权,或者元数据的信息应该被注释,或者xml应该有属性?除此之外,没有其他选择。我看到一个名为setAdapter的方法,它接受映射。我不知道它能做什么,或者它是否能解决我的问题,以编程方式在解组时提供所需的信息。@SandepNair—
setAdapter
方法允许您在
Marshaller
/
解组器
上指定一个
XmlAdapter
的有状态实例(示例请参见:)。