Jaxb 2 отображает разные элементы в одно и то же свойство - PullRequest
1 голос
/ 01 июля 2010

Интересно, возможно ли это в jaxb2? У меня есть XML, который может быть либо , либо , но никогда не появится. Они оба имеют тип String, и я хочу, чтобы он отображался на одно и то же свойство в моем классе Java. Есть ли способ в jaxb2 настроить это?

Спасибо Чарли

Ответы [ 2 ]

1 голос
/ 03 августа 2012

Вы можете сделать что-то подобное:

@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 {}
1 голос
/ 01 июля 2010

Что произойдет, если вы попытаетесь сериализоваться обратно в XML? Какое имя элемента будет использоваться?

Предполагая, что вам нужно только десериализовать из XML в Java, вы можете сделать это, пометив ваши методы установки вместо полей:

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 мог правильно распознавать сеттеры.

...