Jaxb 2 mapping different element to the same property

六眼飞鱼酱① 提交于 2019-12-23 03:05:17

问题


I wonder if this is possible in jaxb2. I have a xml that can be either < element > or < element2 > it will never apear at the some time. They are both of type String and I want it to map to the same property in my java class. Is there a way in jaxb2 to configure that?

Thanks Charlie


回答1:


What would happen if you tried to serialize back to XML? Which element name would be used?

Assuming you only need to deserialize from XML to Java, then you can do this by annotating your setter methods instead of your fields:

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;
   }
}

You might also have to add getA() and getB() methods in order for JAXB to recognise the setters properly.




回答2:


You can do something like that:

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

Where:

public interface SubjectVO {}
public class CommandVO implements SubjectVO {}
public class ScriptVO implements SubjectVO {}


来源:https://stackoverflow.com/questions/3156560/jaxb-2-mapping-different-element-to-the-same-property

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!