2010-07-01 147 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 {} 
相關問題