2010-07-01 136 views
1

我不知道这是否可能在jaxb2。我有一个xml,它可以是< element>或< element2>它在某个时候永远不会出现。他们都是String类型,我希望它映射到我的java类中的同一个属性。有没有在jaxb2配置的方法?Jaxb 2将不同的元素映射到相同的属性

感谢 查理

回答

1

如果你试图序列化回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。

+3

是啊,在我的情况我只解组消息对象。然而,我确实希望它映射到相同的get属性,所以我不必去if(getA == null)getB;我现在已经使用@XmlElements({@XmlElement(name =“element”), @XmlElement(name =“element2”)})找到了对此的答案 感谢您的努力。 – charleetm 2010-07-01 10:06:31

1

你可以做这样的事情:

@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<SubjectVO> commands; 

其中:

public interface SubjectVO {} 
public class CommandVO implements SubjectVO {} 
public class ScriptVO implements SubjectVO {} 
相关问题