使用JAXB从外部库中注释对象

时间:2013-07-26 15:31:38

标签: java xml marshalling jaxb2

通过使用 JAXB v.2.2.7来指定从外部库中定义的类对象的编组/解组是否存在?我想必须定义一个改编,但我怎么能注意到该对象有我的适配器?

E.g。 我使用来自 Joda 库的Interval。如果我将Interval对象注释到类中,如下所示:

@XmlElement(name="DateInterval")
protected Interval dateInterval;

然后在编组过程中创建一个空标记,即

<DateInterval/>

当然,这是预期的,因为没有注释Interval类。

1 个答案:

答案 0 :(得分:1)

对于Joda库,您可以为XmlAdapter等类型创建JAXB Interval。然后,您可以在包级别引用XmlAdapter,以便属于该包中的类的该类型的所有映射字段/属性都将应用XmlAdapter

@XmlJavaTypeAdapters({
    @XmlJavaTypeAdapter(type=DateTime.class,
        value=DateTimeAdapter.class),
    @XmlJavaTypeAdapter(type=DateMidnight.class,
        value=DateMidnightAdapter.class),
    @XmlJavaTypeAdapter(type=LocalDate.class,
        value=LocalDateAdapter.class),
    @XmlJavaTypeAdapter(type=LocalTime.class,
        value=LocalTimeAdapter.class),
    @XmlJavaTypeAdapter(type=LocalDateTime.class,
        value=LocalDateTimeAdapter.class)
})
package blog.jodatime;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;

import org.joda.time.DateMidnight;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.joda.time.LocalTime;

了解更多信息