如何在Java中将XML插入SOAP头部

3

有没有一种干净的方式(不使用字符串拼接)将XML文档插入SOAP头部?我使用JAXB编译模式,现在需要将其包装在SOAP信封中。对于正文,我使用了:

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

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

addDocument

以前我使用字符串拼接的方式,这种方式虽然简单却不是最灵活的方法。 我不仅仅是添加一个Qname,而是添加整个XML文档。 有没有什么办法可以完成这个任务呢?

1个回答

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

1
我知道这很老了,但是如果您能够包括编译此静态函数所需的导入语句,像这样的代码片段将更有帮助。 - BigTFromAZ
注意:document 是 org.w3c.dom.Document 的一个实例;docFrag 是 org.w3c.dom.DocumentFragment 的一个实例。 - BigTFromAZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接