Pergunta

Alguns API retorna me XmlCursor apontando na raiz do documento XML. Eu preciso inserir tudo isso em outro documento representado org.w3c.dom.

No início: XmlCursor poiting em

<a> <b> some text </b> </a>

DOM Documento:

<foo>

</foo>

No final eu quero ter documento DOM originais mudou assim:

<foo>

  <someOtherInsertedElement>

    <a> <b> some text </b> </a>

  </someOtherInsertedElement>

</foo>

NOTA:. document.importNode(cursor.getDomNode()) não funciona - exceção é lançada: NOT_SUPPORTED_ERR: A implementação não suporta o tipo pedido de objeto ou operação

Foi útil?

Solução

Tente algo parecido com isto:

Node originalNode = cursor.getDomNode();
Node importNode = document.importNode(originalNode.getFirstChild());
Node otherNode = document.createElement("someOtherInsertedElement");
otherNode.appendChild(importNode);
document.appendChild(otherNode);

Assim, em outras palavras:

  1. Obter o nó DOM do cursor. Neste caso, é um DOMDocument, então, fazer getFirstChild () para obter o nó raiz.
  2. importá-lo para o DOMDocument.
  3. fazer outras coisas com o DOMDocument.
  4. Anexar o nó importado para o nó direito.

A razão para importação é que um nó sempre "pertence" a uma determinada DOMDocument. Basta adicionar o nó original causaria exceções.

Outras dicas

Eu estava tendo o mesmo problema.

Este estava falhando:

Node importNode = document.importNode(originalNode);

Esta corrigiu o problema:

Node importNode = document.importNode(originalNode.getFirstChild());

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top