我正在使用 javax.xml.soap 包处理 SOAP。
我有一个 javax.xml.soap.SOAPMessage 对象,它对应于对我的 SOAP 请求的响应,我必须将它转换为用 注释的类的实例javax.xml.bind.annotation.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 提供了一种简单的方法来 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
然后解码它。如果您有兴趣,还有其他更迂回的方式可以从 A 点到达 B 点,但您可能可以使用上面的代码片段解决您的问题。
关于java - 将 SOAPMessage 对象转换为 Java 中 XmlType 注释类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956015/