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

时间:2010-07-01 09:34:55

标签: java xml jaxb jaxb2

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

由于 查理

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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 {}