DOM XML - Agregar nodo

En este capítulo, discutiremos los nodos del elemento existente. Proporciona un medio para:

  • agregar nuevos nodos secundarios antes o después de los nodos secundarios existentes

  • insertar datos dentro del nodo de texto

  • agregar nodo de atributo

Los siguientes métodos se pueden usar para agregar / agregar los nodos a un elemento en un DOM:

  • appendChild()
  • insertBefore()
  • insertData()

añadir Niño()

El método appendChild () agrega el nuevo nodo secundario después del nodo secundario existente.

Sintaxis

La sintaxis del método appendChild () es la siguiente:

Node appendChild(Node newChild) throws DOMException

Dónde,

  • newChild : es el nodo a agregar

  • Este método devuelve el nodo agregado.

Ejemplo

El siguiente ejemplo (appendchildnode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y agrega un nuevo PhoneNo secundario al elemento <FirstName>.

<!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");

         create_e = xmlDoc.createElement("PhoneNo");

         x = xmlDoc.getElementsByTagName("FirstName")[0];
         x.appendChild(create_e);

         document.write(x.getElementsByTagName("PhoneNo")[0].nodeName);
      </script>
   </body>
</html>

En el ejemplo anterior:

  • utilizando el método createElement (), se crea un nuevo elemento PhoneNo .

  • El nuevo elemento PhoneNo se agrega al elemento FirstName usando el método appendChild ().

Ejecución

Guarde este archivo como appendchildnode_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). En la salida, obtenemos el valor del atributo como PhoneNo .

insertBefore ()

El método insertBefore () , inserta los nuevos nodos secundarios antes que los nodos secundarios especificados.

Sintaxis

La sintaxis del método insertBefore () es la siguiente:

Node insertBefore(Node newChild, Node refChild) throws DOMException

Dónde,

  • newChild : es el nodo que se va a insertar

  • refChild : es el nodo de referencia, es decir, el nodo antes del cual se debe insertar el nuevo nodo.

  • Este método devuelve el nodo que se está insertando.

Ejemplo

El siguiente ejemplo (insertnodebefore_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML e inserta un nuevo correo electrónico secundario antes del elemento especificado <Email>.

<!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");

         create_e = xmlDoc.createElement("Email");

         x = xmlDoc.documentElement;
         y = xmlDoc.getElementsByTagName("Email");

         document.write("No of Email elements before inserting was: " + y.length);
         document.write("<br>");
         x.insertBefore(create_e,y[3]);

         y=xmlDoc.getElementsByTagName("Email");
         document.write("No of Email elements after inserting is: " + y.length);
      </script>
   </body>
</html>

En el ejemplo anterior:

  • utilizando el método createElement (), se crea un nuevo elemento Email .

  • El nuevo elemento Correo electrónico se agrega antes del elemento Correo electrónico mediante el método insertBefore ().

  • y.length da el número total de elementos agregados antes y después del nuevo elemento.

Ejecución

Guarde este archivo como insertnodebefore_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Recibiremos el siguiente resultado:

No of Email elements before inserting was: 3
No of Email elements after inserting is: 4

insertData ()

El método insertData () inserta una cadena en el desplazamiento de unidad de 16 bits especificado.

Sintaxis

InsertData () tiene la siguiente sintaxis:

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

Dónde,

  • desplazamiento : es el desplazamiento de caracteres en el que se inserta.

  • arg : es la palabra clave para insertar los datos. Incluye los dos parámetros offset y string entre paréntesis separados por comas.

Ejemplo

El siguiente ejemplo (addtext_example.htm) analiza un documento XML (" node.xml ") en un objeto DOM XML e inserta nuevos datos MiddleName en la posición especificada en el elemento <FirstName>.

<!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("FirstName")[0].childNodes[0];
        document.write(x.nodeValue);
        x.insertData(6,"MiddleName");
        document.write("<br>");
        document.write(x.nodeValue);

     </script>
   </body>
</html>
  • x.insertData(6,"MiddleName");- Aquí, x contiene el nombre del niño especificado, es decir, <FirstName>. Luego insertamos en este nodo de texto los datos "MiddleName" comenzando desde la posición 6.

Ejecución

Guarde este archivo como addtext_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Recibiremos lo siguiente en la salida:

Tanmay
TanmayMiddleName