1

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

谢谢查理

4

2 回答 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 正确识别设置器。

于 2010-07-01T09:52:04.950 回答
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 {}
于 2012-08-02T23:46:27.333 回答