2009-06-05 3 views

Répondre

6

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 soapBodyJAX-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.

Questions connexes