JAXB解组没有注释的自定义实体

时间:2012-08-22 19:08:38

标签: jaxb jaxb2 jaxb2-basics

我们有一个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){

        }

我收到以下异常。一个用于无参数构造函数(我知道我可以通过为Adapter添加注释来解决这个问题但我想知道或看到一个样本片段来处理它而没有注释)

同样地,我收到另一条消息,说JAXB无法处理接口。

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:5个IllegalAnnotationExceptions计数 java.sql.Timestamp没有no-arg默认构造函数。     此问题与以下位置有关:         在java.sql.Timestamp         at public java.sql.Timestamp com.test.Abc.getSomeTimestamp()         在com.riteaid.entities.customer.Customer com.test.Def没有no-arg默认构造函数。     此问题与以下位置有关:         在com.test.Def ...

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

1 个答案:

答案 0 :(得分:4)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。

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

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

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

相关问题