我想知道这在 jaxb2 中是否可行。我有一个可以是 <element> 或 <element2> 的 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 正确识别设置器。
你可以这样做:
@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 {}