jaxb,我可以在@XmlElements中使用@XmlJavaTypeAdapter吗?

时间:2012-06-19 16:31:03

标签: annotations jaxb marshalling xmladapter

给出以下注释

@XmlElements({
 @XmlElement(name = "first", type = First.class),
 @XmlElement(name = "second", type = Second.class),
 @XmlElement(name = "third", type = Third.class),
 @XmlElement(name = "fourth", type = Fourth.class),
 @XmlElement(name = "fifth", type = Fifth.class),
 @XmlElement(name = "sixth", type = Sixth.class),
 @XmlElement(name = "seventh", type = Seventh.class)})
private List<Dimension> dimensions = new ArrayList<>();

由于一些有趣的遗留逻辑,我需要为Third.class提供适配器。

@XmlJavaTypeAdapter(ThirdAdapter.class)
public class Third implements Dimension

但是,似乎从未调用过ThirdAdapter。 @XmlJavaTypeAdapter与@XmlElements兼容吗?或者有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

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

这似乎是JAXB reference implementation中的错误。它也是bug中的EclipseLink JAXB (MOXy),但我们在EclipseLink 2.4.0流中修复了它。您可以从以下位置下载候选版本:

<强> jaxb.properties

要将MOXy用作JAXB提供程序,您需要在与域模型相同的程序包中添加名为jaxb.properties的文件,并使用以下条目:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory