Question

Certaines API me renvoient XmlCursor en pointant sur la racine du document XML. Je dois insérer tout cela dans un autre document représenté par org.w3c.DOM.

Au début: XmlCursor pointant sur

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

Document DOM:

<foo>

</foo>

<foo>

  <someOtherInsertedElement>

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

  </someOtherInsertedElement>

À la fin, je souhaite que le document DOM original soit modifié comme suit: document.importNode(cursor.getDomNode())

<=>

<=>

REMARQUE: <=> ne fonctionne pas - une exception est levée: NOT_SUPPORTED_ERR: l'implémentation ne prend pas en charge le type d'objet ou d'opération demandé.

Était-ce utile?

La solution

Essayez quelque chose comme ça:

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

Donc en d'autres termes:

  1. Récupère le nœud DOM à partir du curseur. Dans ce cas, il s’agit d’un document DOMDocument, donc getFirstChild () pour obtenir le noeud racine.
  2. Importez-le dans le DOMDocument.
  3. Faites d'autres choses avec le DOMDocument.
  4. Ajoutez le noeud importé au bon noeud.

La raison de l’importation est qu’un nœud est toujours " appartient à " à un DOMDocument donné. Le simple ajout du noeud d'origine provoquerait des exceptions.

Autres conseils

J'avais le même problème.

Cela échouait:

Node importNode = document.importNode(originalNode);

Ceci a résolu le problème:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top