DOM XML - Nó Clone

Neste capítulo, vamos discutir a operação Clone Node no objeto XML DOM. A operação do nó clone é usada para criar uma cópia duplicada do nó especificado. cloneNode () é usado para esta operação.

cloneNode ()

Este método retorna uma duplicata deste nó, ou seja, serve como um construtor de cópia genérico para nós. O nó duplicado não tem pai (parentNode é nulo) e nenhum dado do usuário.

Sintaxe

O método cloneNode () tem a seguinte sintaxe -

Node cloneNode(boolean deep)
  • deep - se verdadeiro, clona recursivamente a subárvore no nó especificado; se falso, clona apenas o próprio nó (e seus atributos, se for um Elemento).

  • Este método retorna o nó duplicado.

Exemplo

O exemplo a seguir (clonenode_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria uma cópia profunda do primeiro elemento 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>

Como você pode ver no exemplo acima, definimos o parâmetro cloneNode () como verdadeiro . Conseqüentemente, cada elemento filho no elemento Employee é copiado ou clonado.

Execução

Salve este arquivo como clonenode_example.htm no caminho do servidor (este arquivo e node.xml devem estar no mesmo caminho em seu servidor). Obteremos a saída conforme mostrado abaixo -

Tanmay Patil, 1234567890, [email protected]
Taniya Mishra, 1234667898, [email protected]
Tanisha Sharma, 1234562350, [email protected]
Tanmay Patil, 1234567890, [email protected]

Você notará que o primeiro elemento Employee foi clonado completamente.