XML DOM-복제 노드
이 장에서는 XML DOM 객체에 대한 노드 복제 작업에 대해 설명합니다. 복제 노드 작업은 지정된 노드의 복제 복사본을 만드는 데 사용됩니다. 이 작업에는 cloneNode () 가 사용됩니다.
cloneNode ()
이 메소드는이 노드의 복제본을 반환합니다. 즉, 노드에 대한 일반 복사 생성자 역할을합니다. 중복 노드에는 상위 (parentNode가 널임) 및 사용자 데이터가 없습니다.
통사론
cloneNode () 메소드는 다음과 같은 구문을 가지고 -
Node cloneNode(boolean deep)
deep- 참이면 지정된 노드 아래의 하위 트리를 재귀 적으로 복제합니다. false 인 경우 노드 자체 (및 요소 인 경우 해당 속성) 만 복제합니다.
이 메서드는 중복 노드를 반환합니다.
예
다음 예제 (clonenode_example.htm)는 XML 문서 ( node.xml )를 XML DOM 개체로 구문 분석 하고 첫 번째 Employee 요소 의 전체 복사본을 만듭니다 .
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
x = xmlDoc.getElementsByTagName('Employee')[0];
clone_node = x.cloneNode(true);
xmlDoc.documentElement.appendChild(clone_node);
firstname = xmlDoc.getElementsByTagName("FirstName");
lastname = xmlDoc.getElementsByTagName("LastName");
contact = xmlDoc.getElementsByTagName("ContactNo");
email = xmlDoc.getElementsByTagName("Email");
for (i = 0;i < firstname.length;i++) {
document.write(firstname[i].childNodes[0].nodeValue+'
'+lastname[i].childNodes[0].nodeValue+',
'+contact[i].childNodes[0].nodeValue+', '+email[i].childNodes[0].nodeValue);
document.write("<br>");
}
</script>
</body>
</html>
위의 예에서 볼 수 있듯이 cloneNode () 매개 변수를 true로 설정했습니다 . 따라서 Employee 요소 아래의 각 자식 요소가 복사되거나 복제됩니다.
실행
이 파일을 서버 경로에 clonenode_example.htm 으로 저장 합니다 (이 파일과 node.xml은 서버의 동일한 경로에 있어야 함). 아래와 같이 출력을 얻습니다.
Tanmay Patil, 1234567890, [email protected]
Taniya Mishra, 1234667898, [email protected]
Tanisha Sharma, 1234562350, [email protected]
Tanmay Patil, 1234567890, [email protected]
첫 번째 Employee 요소가 완전히 복제 되었음을 알 수 있습니다.