DOM XML - Nút sao chép
Trong chương này, chúng ta sẽ trình bày về hoạt động Clone Node trên đối tượng DOM XML. Thao tác nút sao chép được sử dụng để tạo bản sao trùng lặp của nút được chỉ định. cloneNode () được sử dụng cho thao tác này.
cloneNode ()
Phương thức này trả về một bản sao của nút này, tức là, đóng vai trò như một phương thức khởi tạo sao chép chung cho các nút. Node trùng lặp không có cha mẹ (parentNode là null) và không có dữ liệu người dùng.
Cú pháp
Phương thức cloneNode () có cú pháp sau:
Node cloneNode(boolean deep)
deep - Nếu đúng, sao chép đệ quy cây con dưới nút được chỉ định; nếu sai, chỉ sao chép bản thân nút (và các thuộc tính của nó, nếu nó là một Phần tử).
Phương thức này trả về nút trùng lặp.
Thí dụ
Ví dụ sau (clonenode_example.htm) phân tích cú pháp một tài liệu XML ( node.xml ) thành một đối tượng XML DOM và tạo một bản sao sâu của phần tử Nhân viên đầu tiên .
<!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>
Như bạn có thể thấy trong ví dụ trên, chúng tôi đã đặt tham số cloneNode () thành true . Do đó mỗi phần tử con trong phần tử Nhân viên được sao chép hoặc nhân bản.
Chấp hành
Lưu tệp này dưới dạng clonenode_example.htm trên đường dẫn máy chủ (tệp này và node.xml phải nằm trên cùng một đường dẫn trong máy chủ của bạn). Chúng ta sẽ nhận được kết quả như hình dưới đây -
Tanmay Patil, 1234567890, [email protected]
Taniya Mishra, 1234667898, [email protected]
Tanisha Sharma, 1234562350, [email protected]
Tanmay Patil, 1234567890, [email protected]
Bạn sẽ nhận thấy rằng phần tử Nhân viên đầu tiên được nhân bản hoàn toàn.