Jaxb xml complexes unmarshall
Je vais avoir des questions à unmarshall imbriquée xml ci-dessous. Quelqu'un peut-veuillez indiquer si je suis absent quelque chose.
body
balise peut contenir n'importe quel Jaxb enrichies obj.
Dois-je créer une coutume adaptateur pour marshalling/unmarshalling tels xml?
XML d'entrée
<?xml version="1.0" encoding="UTF-8"?>
<serviceRq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="serviceRq">
<body>
<createRq>
<id>1234</id>
</createRq>
</body>
</serviceRq>
Mon Jaxb-annoté classes sont:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "serviceRq")
public class ServiceRq{
private Object body;
<!-- getters and setters omitted-->
}
Ici, le corps peut être tout jaxb annoté objet, dans ce cas, son CreateRq.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "createRq")
public class CreateRq{
private String id;
<!-- getters and setters omitted-->
}
Je suis à la recherche d'une façon générique à l'appui de toute Jaxb annoté de l'objet dans le corps de l'xml d'entrée.
OriginalL'auteur BSingh | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
@XmlAnyElement(lax=true)
et unXmlAdapter
pour gérer ce cas d'utilisation:ServiceRq
BodyAdapter
Corps
CreateRq
Démo
Pour Plus D'Informations
Si on lâche à false (comportement par défaut), Il va créer un objet dom à partir du contenu xml et ne pas essayer de le mapper sur un objet connu?
OriginalL'auteur bdoughan
Vous pouvez utiliser
@XmlAnyElement(lax=true)
et la@XmlPath
extension dans EclipseLink JAXB (MOXy) pour gérer ce cas d'utilisation (Note: je suis le MOXy plomb). Pour une approche pour travailler avec n'importe quel JAXB de mise en œuvre (Métro, MOXy, JaxMe, etc) voir: Jaxb xml complexes unmarshall.ServiceRq
CreateRq
Démo
jaxb.propriétés
À utiliser MOXy que votre JAXB fournisseur, vous devez inclure un fichier nommé jaxb.propriétés dans le même package que votre modèle de domaine avec l'entrée suivante:
Pour Plus D'Informations
OriginalL'auteur bdoughan