Jaxb 2将不同的元素映射到同一属性

我想知道这是否可能在jaxb2中。 我有一个可以是或的xml,它在某个时候永远不会出现。 它们都是String类型,我希望它映射到我的java类中的相同属性。 在jaxb2中有没有办法配置它?

谢谢查理

如果您尝试序列化回XML,会发生什么? 将使用哪个元素名称?

假设您只需要从XML反序列化为Java,那么您可以通过注释setter方法而不是字段来完成此操作:

public class Bean { private String value; @XmlElement(name="element") public void setA(String value) { this.value = value; } @XmlElement(name="element2") public void setB(String value) { this.value = value; } } 

您可能还必须添加getA()getB()方法,以便JAXB正确识别setter。

你可以这样做:

 @XmlElements({ @XmlElement(name="command", type=CommandVO.class, namespace="http://chains.projetox.com.br/"), @XmlElement(name="script", type=ScriptVO.class, namespace="http://chains.projetox.com.br/") }) private List commands; 

哪里:

 public interface SubjectVO {} public class CommandVO implements SubjectVO {} public class ScriptVO implements SubjectVO {}