Question

J'utilise Xerces-c dans mon projet et souhaite créer un seul DOMElement sans avoir à créer un tout nouveau DOMDocument . Une telle chose est-elle possible?

Était-ce utile?

La solution

Je n'ai pas vu de solution. Autant que je sache, le DOMDocument agit en tant que "pool de mémoire". et tous les éléments sont créés dans ce pool. Dans les Xerces docs , nous voyons:

  

Objets créés par DOMDocument :: createXXXX   Les utilisateurs peuvent appeler la fonction release () pour indiquer la publication des nœuds orphelins. Lorsqu'un nœud orphelin est libéré, ses enfants associés le sont également. L'accès à un nœud publié entraînera un comportement inattendu. Ces nœuds orphelins seront éventuellement libérés, si ce n'est déjà fait, lorsque le document de propriétaire est publié

J'ai résolu le problème en conservant un DOMDocument bloc-notes et en l'utilisant pour créer des fragments ou des nœuds orphelins, puis de les intégrer dans leurs documents de destination lorsque je suis prêt. Ex.

// Create a fragment holding two sibling elements. The first element also has a child.
DOMDocumentFragment* frag = scratchDom->createDocumentFragment();
DOMNode* e1 = frag->appendChild( frag->getOwnerDocument()->createElement("e1") );
e1->appendChild( e1->getOwnerDocument()->createElement("e1-1") );
DOMNode* e2 = frag->appendChild( frag->getOwnerDocument()->createElement("e2") );
...
// Paste the contents of the fragment into a "parent" node from another document
DOMNode* parentFromOtherDom = ...;
parentFromOtherDom->appendChild( parentFromOtherDom->getOwnerDocument()->adopt(frag) );
scratchDom->removeChild(frag);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top