"WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it" 尽管我正在另一个节点中导入,但抛出了异常

"WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it" exception thrown although I am importing in another node

我正在尝试将节点附加到 xml 文件中的正文元素,如下所示:

  Document document2 = db.newDocument();
  Node node = document2.importNode(document.getFirstChild(), true);
  envelope.getBody().addBodyElement(QName.valueOf("com:createLicense")).appendChild(node);

我遇到了这个异常:

org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.
at java.xml/com.sun.org.apache.xerces.internal.dom.ParentNode.internalInsertBefore(ParentNode.java:355)
at java.xml/com.sun.org.apache.xerces.internal.dom.ParentNode.insertBefore(ParentNode.java:286)
at java.xml/com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(NodeImpl.java:230)
at com.sun.xml.messaging.saaj.soap.impl.ElementImpl.appendChild(ElementImpl.java:234)
at SOAPClientSAAJ.createSoapEnvelope(SOAPClientSAAJ.java:106)
at SOAPClientSAAJ.createSOAPRequest(SOAPClientSAAJ.java:157)
at SOAPClientSAAJ.callSoapWebService(SOAPClientSAAJ.java:139)
at SOAPClientSAAJ.main(SOAPClientSAAJ.java:47)

任何suggestions/solutions?

问题是我正在处理三个文档。

解决方案如下:

Document document = db.newDocument();
jaxbMarshaller.marshal(jaxbElement, document);
DocumentFragment docFrag = document.createDocumentFragment();
Element rootElement = document.getDocumentElement();
docFrag.appendChild(rootElement);
Document ownerDoc = soapBody.getOwnerDocument();
Node replacingNode = ownerDoc.importNode(docFrag, true);

envelope.getBody().addBodyElement(QName.valueOf("com:createLicense")).appendChild(node);