我在我的项目中使用 Xerces-c,并且想创建一个DOMElement
而不需要创建一个全新的DOMDocument
. 这样的事情可能吗?
Hans
问问题
2075 次
1 回答
3
我还没有看到方法。AFAIK DOMDocument 充当“内存池”,所有元素都在此池中创建。在 Xerces文档中,我们看到:
由 DOMDocument::createXXXX 创建的对象 用户可以调用 release() 函数来指示任何孤立节点的释放。当一个孤立节点被释放时,其关联的子节点也将被释放。访问已发布的节点将导致意外行为。这些孤立节点最终将在其所有者文档发布时被释放,如果尚未这样做的话
我已经解决了这种情况,方法是保留一个便签本DOMDocument 并使用它来创建片段或孤立节点,并在我准备好时将它们采用到目标文档中。例如
// 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);
于 2008-10-22T03:35:13.067 回答