javax.xml.soap.SOAPMessage
est une classe API SAAJ. Le lien fournit quelques détails sur l'API SAAJ ainsi qu'une implémentation de référence. Gardez à l'esprit que l'implémentation dans votre environnement peut être différente de l'implémentation de référence, mais vous ne devez vous préoccuper que de l'API elle-même et non des spécificités de l'implémentation. Puisque vous parlez des types annotés JAX-B 2.x, nous pouvons supposer que vous avez affaire à SAAJ 3. Beaucoup de classes SAAJ 3 étendent les classes DOM (je suis sûr que cela est vrai dans SAAJ 2, mais pas dans SAAJ 1) . Il arrive juste que javax.xml.soap.SOAPMessage
extends org.w3c.dom.Node
. Commodément, JAX-B 2.x fournit un moyen facile de unmarshall un arbre DOM (ou sous-arbre) dans un type Java.
Le code suivant est une façon:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
JAXBContext jc = JAXBContext.newInstance("test.jaxb");
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.unmarshal(soapBody);
Sinon, vous pouvez transformer en un soapBody
JAX-P DOMSource
puis unmarshall il. Il y a d'autres façons encore plus détournées d'aller du point A au point B si cela vous intéresse, mais vous pouvez probablement résoudre votre problème avec l'extrait de code ci-dessus.