2010-07-01 8 views
1

Je me demande si cela est possible dans jaxb2. J'ai un xml qui peut être soit < élément> soit < élément2> il n'apparaîtra jamais à un moment donné. Ils sont tous les deux de type String et je veux qu'ils correspondent à la même propriété dans ma classe java. Existe-t-il un moyen de configurer jaxb2?Jaxb 2 mappage d'un élément différent à la même propriété

Merci Charlie

Répondre

1

Que se passerait-il si vous avez essayé de sérialisation XML? Retour Quel nom d'élément serait utilisé?

En supposant que vous ne devez désérialiser de XML à Java, vous pouvez le faire en annotant vos méthodes setter au lieu de vos champs:

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

Vous pourriez aussi ajouter getA() et getB() méthodes pour que JAXB pour reconnaître les setters correctement.

+3

Oui dans ma situation, je ne jamais unmarshall le message à l'objet. Cependant, je veux qu'il soit mappé à la même propriété get, donc je n'ai pas besoin d'un get (getA == null) getB; J'ai trouvé une réponse à ceci maintenant using @XmlElements ({@XmlElement (name = "élément"), @XmlElement (name = "element2")}) Merci pour l'effort tho. – charleetm

1

Vous pouvez faire quelque chose comme ça:

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

Où:

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