DOM XML - Crear nodo

En este capítulo, discutiremos cómo crear nuevos nodos usando un par de métodos del objeto de documento. Estos métodos proporcionan un alcance para crear un nuevo nodo de elemento, nodo de texto, nodo de comentario, nodo de sección CDATA y nodo de atributo . Si el nodo recién creado ya existe en el objeto de elemento, se reemplaza por el nuevo. Las siguientes secciones demuestran esto con ejemplos.

Crear nuevo nodo de elemento

El método createElement () crea un nuevo elemento nodo. Si el nodo de elemento recién creado existe en el objeto de elemento, se reemplaza por el nuevo.

Sintaxis

La sintaxis para usar el método createElement () es la siguiente:

var_name = xmldoc.createElement("tagname");

Dónde,

  • var_name : es el nombre de la variable definida por el usuario que contiene el nombre del nuevo elemento.

  • ("nombre de etiqueta") : es el nombre del nuevo nodo de elemento que se creará.

Ejemplo

El siguiente ejemplo (createnewelement_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y crea un nuevo nodo de elemento PhoneNo en el documento XML.

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

         new_element = xmlDoc.createElement("PhoneNo");

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

         document.write(x.getElementsByTagName("PhoneNo")[0].nodeName);
      </script>
   </body>
</html>
  • new_element = xmlDoc.createElement ("PhoneNo"); crea el nuevo nodo de elemento <PhoneNo>

  • x.appendChild (nuevo_elemento); x contiene el nombre del nodo secundario especificado <FirstName> al que se agrega el nuevo nodo de elemento.

Ejecución

Guarde este archivo como createnewelement_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 .

Crear un nuevo nodo de texto

El método createTextNode () crea un nuevo nodo de texto.

Sintaxis

La sintaxis para usar createTextNode () es la siguiente:

var_name = xmldoc.createTextNode("tagname");

Dónde,

  • var_name : es el nombre de la variable definida por el usuario que contiene el nombre del nuevo nodo de texto.

  • ("nombre de etiqueta") : entre paréntesis está el nombre del nuevo nodo de texto que se creará.

Ejemplo

El siguiente ejemplo (createtextnode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y crea un nuevo nodo de texto Im nuevo nodo de texto en el documento XML.

<!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");
         create_t = xmlDoc.createTextNode("Im new text node");
         create_e.appendChild(create_t);

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


         document.write(" PhoneNO: ");
         document.write(x.getElementsByTagName("PhoneNo")[0].childNodes[0].nodeValue);
      </script>
    </body>
</html>

Los detalles del código anterior son los siguientes:

  • create_e = xmlDoc.createElement ("PhoneNo"); crea un nuevo elemento < PhoneNo >.

  • create_t = xmlDoc.createTextNode ("Soy un nuevo nodo de texto"); crea un nuevo nodo de texto "Soy un nuevo nodo de texto" .

  • x.appendChild (crear_e); el nodo de texto, "Soy nuevo nodo de texto" se agrega al elemento, < PhoneNo >.

  • document.write (x.getElementsByTagName ("PhoneNo") [0] .childNodes [0] .nodeValue); escribe el nuevo valor del nodo de texto en el elemento <PhoneNo>.

Ejecución

Guarde este archivo como createtextnode_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, por ejemplo, PhoneNO: Im new text node .

Crear nuevo nodo de comentario

El método createComment () crea un nuevo nodo de comentario. El nodo de comentario está incluido en el programa para una fácil comprensión de la funcionalidad del código.

Sintaxis

La sintaxis para usar createComment () es la siguiente:

var_name = xmldoc.createComment("tagname");

Dónde,

  • var_name : es el nombre de la variable definida por el usuario que contiene el nombre del nuevo nodo de comentario.

  • ("nombre de etiqueta") : es el nombre del nuevo nodo de comentario que se creará.

Ejemplo

El siguiente ejemplo (createcommentnode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y crea un nuevo nodo de comentario, "La empresa es el nodo principal" en el documento XML.

<!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_comment = xmlDoc.createComment("Company is the parent node");

         x = xmlDoc.getElementsByTagName("Company")[0];

         x.appendChild(create_comment);

         document.write(x.lastChild.nodeValue);
      </script>
   </body>
</html>

En el ejemplo anterior:

  • create_comment = xmlDoc.createComment ("La empresa es el nodo principal") creates a specified comment line.

  • x.appendChild (create_comment) En esta línea, 'x' contiene el nombre del elemento <Company> al que se agrega la línea de comentarios.

Ejecución

Guarde este archivo como createcommentnode_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 ya que Company es el nodo principal .

Crear nuevo nodo de sección CDATA

El método createCDATASection () crea un nuevo nodo de sección CDATA. Si el nodo de sección CDATA recién creado existe en el objeto de elemento, se reemplaza por el nuevo.

Sintaxis

La sintaxis para usar createCDATASection () es la siguiente:

var_name = xmldoc.createCDATASection("tagname");

Dónde,

  • var_name - es el nombre de la variable definida por el usuario que contiene el nombre del nuevo nodo de la sección CDATA.

  • ("nombre de etiqueta") : es el nombre del nuevo nodo de la sección CDATA que se creará.

Ejemplo

El siguiente ejemplo (createcdatanode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y crea un nuevo nodo de sección CDATA, "Crear ejemplo CDATA" en el documento XML.

<!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_CDATA = xmlDoc.createCDATASection("Create CDATA Example");

         x = xmlDoc.getElementsByTagName("Employee")[0];
         x.appendChild(create_CDATA);
         document.write(x.lastChild.nodeValue);
      </script>
   </body>
</html>

En el ejemplo anterior:

  • create_CDATA = xmlDoc.createCDATASection ("Crear ejemplo de CDATA") crea un nuevo nodo de sección CDATA, "Crear ejemplo de CDATA"

  • x.appendChild (create_CDATA) aquí, x contiene el elemento especificado <Employee> indexado en 0 al que se agrega el valor del nodo CDATA.

Ejecución

Guarde este archivo como createcdatanode_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 Crear ejemplo CDATA .

Crear un nuevo nodo de atributo

Para crear un nuevo nodo de atributo, se utiliza el método setAttributeNode () . Si el nodo de atributo recién creado existe en el objeto de elemento, se reemplaza por el nuevo.

Sintaxis

La sintaxis para usar el método createElement () es la siguiente:

var_name = xmldoc.createAttribute("tagname");

Dónde,

  • var_name : es el nombre de la variable definida por el usuario que contiene el nombre del nuevo nodo de atributo.

  • ("nombre de etiqueta") : es el nombre del nuevo nodo de atributo que se creará.

Ejemplo

El siguiente ejemplo (createattributenode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y crea una nueva sección de nodo de atributo en el documento XML.

<!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_a = xmlDoc.createAttribute("section");
         create_a.nodeValue = "A";

         x = xmlDoc.getElementsByTagName("Employee");
         x[0].setAttributeNode(create_a);
         document.write("New Attribute: ");
         document.write(x[0].getAttribute("section"));

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

En el ejemplo anterior:

  • create_a = xmlDoc.createAttribute ("Categoría") crea un atributo con el nombre <sección>.

  • create_a.nodeValue = "Gestión" crea el valor "A" para el atributo <sección>.

  • x [0] .setAttributeNode (create_a) este valor de atributo se establece en el elemento de nodo <Employee> indexado en 0.