这里我们将介绍关于XML DOM对象的克隆节点操作。克隆节点操作用于创建指定节点的副本。cloneNode()用于此操作。
此方法返回此节点的副本,即,作为节点的通用拷贝构造函数。重复节点没有父(parentNode为null),没有用户数据。
的cloneNode()方法的语法如下:
节点cloneNode(布尔深) cloneNode(boolean deep)
深 - 如果为真,递归地克隆指定节点下的子树; 如果为false,则仅克隆节点本身(及其属性,如果它是一个Element)。
此方法返回重复节点。
以下示例(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,tanmaypatil@xyz.com Taniya Mishra,1234667898,taniyamishra@xyz.com Tanisha Sharma,1234562350,tanishasharma@xyz.com Tanmay Patil,1234567890,tanmaypatil@xyz.com
您会注意到第一个Employee员工元素被完全克隆。