문제

내 프로젝트에서 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top