문제
내 프로젝트에서 Xerces-C를 사용하고 있으며 싱글을 만들고 싶습니다. DOMElement
완전히 새로운 것을 만들 필요없이 DOMDocument
. 그런 일이 가능합니까?
해결책
나는 방법을 보지 못했습니다. 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);
제휴하지 않습니다 StackOverflow