
DOMNode::appendChild를 사용하여 노드를 추가할 때, 기존 노드의 자식 노드가 삭제되는 이유는 xmlAddChild 함수가 현재 노드의 자식 노드가 있는 경우, 기존 자식 노드를 삭제하고 새로운 노드를 추가하는 방식으로 작동하기 때문입니다.
이러한 문제를 해결하기 위해서는 xmlAddChild 함수 대신 xmlNewChild 함수를 사용하여 새로운 노드를 추가하는 방식으로 노드를 추가할 수 있습니다.
xmlNewChild 함수는 기존 노드의 자식 노드를 삭제하지 않고 새로운 노드를 추가합니다.
예를 들어, 다음과 같이 노드 A에 노드 B를 추가할 수 있습니다.
#hostingforum.kr
cpp
xmlNodePtr nodeB = xmlNewNode(NULL, BAD_CAST "B");
xmlAddChild(nodeA, nodeB);
또는 xmlNewChild 함수를 사용하여 다음과 같이 노드 A에 노드 B를 추가할 수 있습니다.
#hostingforum.kr
cpp
xmlNodePtr nodeB = xmlNewNode(NULL, BAD_CAST "B");
nodeB->parent = nodeA;
nodeB->next = nodeA->children;
nodeA->children = nodeB;
이러한 방식으로 노드를 추가하면 기존 노드의 자식 노드가 삭제되지 않습니다.
2025-07-09 04:31