如何在Java中将XML插入soap头

时间:2016-06-16 15:31:46

标签: java soap jaxb

是否有一种干净的方式(没有字符串连接)将XML文档插入soap标头?我使用JAXB来编译模式,现在我需要将它包装在soap信封中。 对于我使用的身体:

SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
soapMessage.getSOAPBody().addDocument(userDataDocument);

现在对于标题我还需要添加一个文档,但API没有

addDocument

以前我使用字符串连接,这很容易,但不是我脑海中最灵活的方式。 我不只是添加一个Qname,而是整个XML文档。 有没有办法实现这个目标?

1 个答案:

答案 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;
}