
cloneNode 메서드는 두 가지 옵션, DEEP와 SHALLOW를 제공합니다.
- DEEP 옵션: 이 옵션을 사용하면 복사된 노드의 속성과 자식 노드까지 모두 복사됩니다. 즉, 복사된 노드와 원본 노드는 완전히 동일한 구조를 갖습니다.
- SHALLOW 옵션: 이 옵션을 사용하면 복사된 노드의 속성만 복사되며, 자식 노드는 복사되지 않습니다. 복사된 노드는 원본 노드의 자식 노드를 가리키게 됩니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
php
$node = $document->createElement('div');
$node->setAttribute('id', 'original');
$node->appendChild($document->createElement('p'));
$clone = $node->cloneNode(true); // DEEP 옵션
echo $clone->getAttribute('id'); // original
echo $clone->childNodes->item(0)->nodeName; // p
$clone = $node->cloneNode(false); // SHALLOW 옵션
echo $clone->getAttribute('id'); // original
echo $clone->childNodes->length; // 0
위 예제에서 DEEP 옵션을 사용하면 복사된 노드의 속성과 자식 노드까지 모두 복사됩니다. 반면 SHALLOW 옵션을 사용하면 복사된 노드의 속성만 복사되며, 자식 노드는 복사되지 않습니다.
2025-06-10 14:43