【问题标题】:Using JAXB to annotate an object from an external library使用 JAXB 注释来自外部库的对象
【发布时间】:2013-07-26 15:31:37
【问题描述】:

是否存在通过使用 JAXB v.2.2.7 来指定来自外部库中定义的类的对象的编组/解组的方法?我想必须定义一个adapted,但是我怎么能注意到这个对象有我的adapter?

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

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

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

<DateInterval/>

当然,这是意料之中的,因为没有人注释 Interval 类。

【问题讨论】:

    标签: java xml marshalling jaxb2


    【解决方案1】:

    对于 Joda 库,您可以为 Interval 等类型创建 JAXB XmlAdapter。然后,您可以在包级别引用 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;
    

    更多信息

    【讨论】:

    • 错误!我知道如何定义适配器,但是如何在包级别引用适配器?
    • 感谢并祝贺您的​​完整帖子:制作基于 Joda 的示例真是太巧合了 :)
    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多