DOM XML - Reemplazar nodo

En este capítulo, estudiaremos sobre la operación de reemplazo de nodo en un objeto DOM XML. Como sabemos, todo en el DOM se mantiene en una unidad de información jerárquica conocida como nodo y el nodo de reemplazo proporciona otra forma de actualizar estos nodos especificados o un nodo de texto.

A continuación se muestran los dos métodos para reemplazar los nodos.

  • replaceChild()
  • replaceData()

replaceChild ()

El método replaceChild () reemplaza el nodo especificado con el nuevo nodo.

Sintaxis

InsertData () tiene la siguiente sintaxis:

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Dónde,

  • newChild : es el nuevo nodo que se coloca en la lista de niños.

  • oldChild : es el nodo que se reemplaza en la lista.

  • Este método devuelve el nodo reemplazado.

Ejemplo

El siguiente ejemplo (replacenode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y reemplaza el nodo especificado <FirstName> con el nuevo nodo <Name>.

<!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.documentElement;

         z = xmlDoc.getElementsByTagName("FirstName");
         document.write("<b>Content of FirstName element before replace operation</b><br>");
         for (i=0;i<z.length;i++) {
            document.write(z[i].childNodes[0].nodeValue);
            document.write("<br>");
         }
         //create a Employee element, FirstName element and a text node
         newNode = xmlDoc.createElement("Employee");
         newTitle = xmlDoc.createElement("Name");
         newText = xmlDoc.createTextNode("MS Dhoni");

         //add the text node to the title node,
         newTitle.appendChild(newText);
         //add the title node to the book node
         newNode.appendChild(newTitle);

         y = xmlDoc.getElementsByTagName("Employee")[0]
         //replace the first book node with the new node
         x.replaceChild(newNode,y);

         z = xmlDoc.getElementsByTagName("FirstName");
         document.write("<b>Content of FirstName element after replace operation</b><br>");
         for (i = 0;i<z.length;i++) {
            document.write(z[i].childNodes[0].nodeValue);
            document.write("<br>");
         }
      </script>
   </body>
</html>

Ejecución

Guarde este archivo como replacenode_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación:

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

El método replaceData () reemplaza los caracteres que comienzan en el desplazamiento de unidad de 16 bits especificado con la cadena especificada.

Sintaxis

El replaceData () tiene la siguiente sintaxis:

void replaceData(int offset, int count, java.lang.String arg) throws DOMException

Dónde

  • desplazamiento : es el desplazamiento desde el cual comenzar a reemplazar.

  • recuento : es el número de unidades de 16 bits que se deben reemplazar. Si la suma del desplazamiento y el recuento excede la longitud, se reemplazan todas las unidades de 16 bits hasta el final de los datos.

  • arg : DOMString con el que se debe reemplazar el rango.

Ejemplo

El siguiente ejemplo (replacedata_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y lo reemplaza.

<!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("ContactNo")[0].childNodes[0];
         document.write("<b>ContactNo before replace operation:</b> "+x.nodeValue);
         x.replaceData(1,5,"9999999");
         document.write("<br>");
         document.write("<b>ContactNo after replace operation:</b> "+x.nodeValue);

      </script>
   </body>
</html>

En el ejemplo anterior:

  • x.replaceData (2,3, "999"); - Aquí x contiene el texto del elemento especificado <ContactNo> cuyo texto se reemplaza por el nuevo texto "9999999" , comenzando desde la posición 1 hasta la longitud de 5 .

Ejecución

Guarde este archivo como replacedata_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación:

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890