javax.xml.soap.SOAPMessage
- это класс API SAAJ . Ссылка содержит некоторые подробности о SAAJ API, а также справочную реализацию. Имейте в виду, что реализация в вашей среде может отличаться от эталонной реализации, но вы должны интересоваться только самим API, а не какими-либо особенностями реализации. Поскольку вы говорите о аннотированных типах JAX-B 2.x, мы можем предположить, что вы имеете дело с SAAJ 3. Многие из классов SAAJ 3 расширяют классы DOM (я уверен, что это верно в SAAJ 2, но не в SAAJ 1) , Так уж получилось, что javax.xml.soap.SOAPMessage
расширяется org.w3c.dom.Node
. Для удобства JAX-B 2.x предоставляет простой способ unmarshall дерева DOM (или поддерева) в тип Java.
Следующий код является односторонним:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
JAXBContext jc = JAXBContext.newInstance("test.jaxb");
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.unmarshal(soapBody);
Кроме того, вы можете превратить soapBody
в JAX-P DOMSource
, а затем разобрать его. Существуют и другие, еще более окольные пути, чтобы добраться из пункта А в пункт Б, если вы заинтересованы, но, скорее всего, вы сможете решить свою проблему с помощью приведенного выше фрагмента кода.