JAXB,我可以使用@XmlJavaTypeAdapter与@XmlElements?(jaxb,

2019-07-30 01:05发布

考虑下面的注解

@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似乎永远不会被调用。 与@XmlElements @XmlJavaTypeAdapter兼容? 还是有更好的解决呢?

Answer 1:

注:我是的EclipseLink JAXB(莫西)领导和成员JAXB(JSR-222)专家小组。

这似乎是在JAXB的错误参考实现 。 这也是一个错误的EclipseLink JAXB(莫西) ,但我们已经在我们的EclipseLink 2.4.0流固定它。 您可以从以下位置发布候选:

  • http://www.eclipse.org/eclipselink/downloads/milestones.php

jaxb.properties

要使用莫西为您的JAXB提供你需要添加一个名为jaxb.properties在同一个包中的以下项域模型:

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


文章来源: jaxb, can I use @XmlJavaTypeAdapter with @XmlElements?