我正在使用javax.xml.soap包使用SOAP。將SOAPMessage對象轉換爲Java中的XmlType註釋類的實例
我有一個對應於我的SOAP請求的響應javax.xml.soap.SOAPMessage對象,我必須把它轉換爲是與javax.xml.bind中註釋的類的實例。註釋.XmlType註釋。
我該如何做這種轉換?
我正在使用javax.xml.soap包使用SOAP。將SOAPMessage對象轉換爲Java中的XmlType註釋類的實例
我有一個對應於我的SOAP請求的響應javax.xml.soap.SOAPMessage對象,我必須把它轉換爲是與javax.xml.bind中註釋的類的實例。註釋.XmlType註釋。
我該如何做這種轉換?
javax.xml.soap.SOAPMessage
是一個SAAJ API類。該鏈接提供了有關SAAJ API的一些詳細信息以及參考實現。請記住,環境中的實現可能與參考實現不同,但您應該只關注API本身,而不是關於實現的任何細節。既然你談論的是JAX-B 2.x註釋類型,我們可以假設你正在處理SAAJ 3.許多SAAJ 3類擴展了DOM類(我非常肯定這在SAAJ 2中是成立的,但SAAJ 1並不是這樣) 。它恰巧是javax.xml.soap.SOAPMessage
extends org.w3c.dom.Node
。方便地,JAX-B 2.x提供了一種將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
,然後解組。如果您有興趣,還有其他更迂迴的方法可以從A點到B點,但您可以使用上面的代碼片段解決您的問題。