2008-10-21 5 views
2

J'utilise Xerces-c dans mon projet, et je voudrais créer un seul DOMElement sans avoir à créer un nouveau DOMDocument. Une telle chose est possible?Comment créer un DOMEment vide

Répondre

2

Je n'ai pas vu un chemin. AFAIK le DOMDocument agit comme le "pool de mémoire" et tous les éléments sont créés dans ce pool. Dans les Xerces docs on voit:

objets créés par DOMDocument :: createXXXX Les utilisateurs peuvent appeler la fonction release() pour indiquer la libération de tous les nœuds orphelins. Lorsqu'un nœud orphelin est libéré, ses enfants associés seront également libérés. L'accès à un nœud libéré entraînera un comportement inattendu. Ces nœuds orphelins seront finalement libérés, sinon déjà fait, lorsque son propriétaire du document est publié

J'ai travaillé dans cette situation en gardant un bloc-notes DOMDocument autour et à l'utiliser pour créer des fragments ou des orphelins nœuds et de les adopter dans leurs documents de destination quand je suis prêt. Par exemple.

// 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); 
Questions connexes