Как правильно использовать org.w3c.xml.Document # importNode

1

Обратите внимание: SOAPHeader расширяет интерфейсы узлов и элементов:

 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: реализация не поддерживает запрашиваемый тип объекта или операции.

Я думаю, что мой код неверен.

Теги:

2 ответа

3

Имел ту же ошибку 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.

1

Объект SOAPHeader может иметь только объекты SOAPHeaderElement в качестве своих непосредственных детей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню