请注意,SOAPHeader扩展了Node和Element接口:
Document docToAppend= getDoc();
final SOAPHeader soapHeader = getSoapHeader();
final Node importNode = soapHeader.getOwnerDocument().importNode(docToAppend.cloneNode(true), true);
soapHeader.appendChild(importNode);
即。我想将docToAppend
追加到soapHeader
节点。
但它失败了,例外:
引起:org.w3c.dom.DOMException:NOT_SUPPORTED_ERR:The 实现不支持所请求的对象类型或 操作
我认为我的代码不正确。
答案 0 :(得分:5)
有同样的错误NOT_SUPPORTED_ERR。
DOMResult dom = new DOMResult();
getTransformer().transform(new StAXSource(xmlr), dom);
Node node = dom.getNode();
document.appendChild(document.importNode(node, true)); // <---- Error
通过检查节点的类型,发现尝试添加文档而不是元素。
System.out.println("Node type is [" + dom.getNode().getNodeType() + "]");
----
Node type is [9] <---- DOCUMENT_NODE
获取文档节点的第一个子节点。
node = dom.getNode().getFirstChild();
System.out.println("Node type is [" + node.getNodeType() + "]");
document.appendChild(document.importNode(node, true));
----
Node type is 1 <---- ELEMENT_NODE
DOCUMENT_NODE和ELEMENT_NODE值在JAVA API Constant Field Values中指定。
答案 1 :(得分:1)
SOAPHeader对象只能将SOAPHeaderElement对象作为其直接子对象。