是否有一种干净的方式(没有字符串连接)将XML文档插入soap标头?我使用JAXB来编译模式,现在我需要将它包装在soap信封中。 对于我使用的身体:
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
soapMessage.getSOAPBody().addDocument(userDataDocument);
现在对于标题我还需要添加一个文档,但API没有
addDocument
以前我使用字符串连接,这很容易,但不是我脑海中最灵活的方式。 我不只是添加一个Qname,而是整个XML文档。 有没有办法实现这个目标?
答案 0 :(得分:3)
使用addDocument的源代码......
public static SOAPBodyElement addDocumentToSoapHeader(Document document, SOAPMessage soapMessage) throws SOAPException {
SOAPBodyElement newBodyElement = null;
DocumentFragment docFrag = document.createDocumentFragment();
Element rootElement = document.getDocumentElement();
if(rootElement != null) {
docFrag.appendChild(rootElement);
Document ownerDoc = soapMessage.getSOAPHeader().getOwnerDocument();
org.w3c.dom.Node replacingNode = ownerDoc.importNode(docFrag, true);
//this.addNode(replacingNode);
soapMessage.getSOAPHeader().appendChild(replacingNode);
}
return newBodyElement;
}