DOM XML - Criar Nó

Neste capítulo, discutiremos como criar novos nós usando alguns métodos do objeto de documento. Esses métodos fornecem um escopo para criar um novo nó de elemento, nó de texto, nó de comentário, nó de seção CDATA e nó de atributo . Se o nó recém-criado já existir no objeto do elemento, ele será substituído pelo novo. As seções a seguir demonstram isso com exemplos.

Criar novo nó de elemento

O método createElement () cria um novo nó de elemento. Se o nó do elemento recém-criado existir no objeto do elemento, ele será substituído pelo novo.

Sintaxe

A sintaxe para usar o método createElement () é a seguinte -

var_name = xmldoc.createElement("tagname");

Onde,

  • var_name - é o nome da variável definida pelo usuário que contém o nome do novo elemento.

  • ("tagname") - é o nome do novo nó de elemento a ser criado.

Exemplo

O exemplo a seguir (createnewelement_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria um novo nó de elemento PhoneNo no 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"); cria o novo nó de elemento <PhoneNo>

  • x.appendChild (novo_elemento); x contém o nome do nó filho especificado <FirstName> ao qual o novo nó de elemento é anexado.

Execução

Salve este arquivo como createnewelement_example.htm no caminho do servidor (este arquivo e node.xml devem estar no mesmo caminho em seu servidor). Na saída, obtemos o valor do atributo como PhoneNo .

Crie um novo nó de texto

O método createTextNode () cria um novo nó de texto.

Sintaxe

A sintaxe para usar createTextNode () é a seguinte -

var_name = xmldoc.createTextNode("tagname");

Onde,

  • var_name - é o nome da variável definida pelo usuário que contém o nome do novo nó de texto.

  • ("tagname") - entre parênteses está o nome do novo nó de texto a ser criado.

Exemplo

O exemplo a seguir (createtextnode_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria um novo nó de texto Im novo nó de texto no 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>

Os detalhes do código acima são os seguintes -

  • create_e = xmlDoc.createElement ("PhoneNo"); cria um novo elemento < PhoneNo >.

  • create_t = xmlDoc.createTextNode ("Im novo nó de texto"); cria um novo nó de texto "Im novo nó de texto" .

  • x.appendChild (criar_e); o nó de texto, "Im novo nó de texto" é anexado ao elemento, < PhoneNo >.

  • document.write (x.getElementsByTagName ("PhoneNo") [0] .childNodes [0] .nodeValue); grava o novo valor do nó de texto no elemento <PhoneNo>.

Execução

Salve este arquivo como createtextnode_example.htm no caminho do servidor (este arquivo e node.xml devem estar no mesmo caminho em seu servidor). Na saída, obtemos o valor do atributo como, por exemplo, PhoneNO: Im new text node .

Criar novo nó de comentário

O método createComment () cria um novo nó de comentário. O nó de comentário está incluído no programa para facilitar a compreensão da funcionalidade do código.

Sintaxe

A sintaxe para usar createComment () é a seguinte -

var_name = xmldoc.createComment("tagname");

Onde,

  • var_name - é o nome da variável definida pelo usuário que contém o nome do novo nó de comentário.

  • ("tagname") - é o nome do novo nó de comentário a ser criado.

Exemplo

O exemplo a seguir (createcommentnode_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria um novo nó de comentário, "Company is the parent node" no 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>

No exemplo acima -

  • create_comment = xmlDoc.createComment ("Company is the parent node") creates a specified comment line.

  • x.appendChild (create_comment) Nesta linha, 'x' contém o nome do elemento <Company> ao qual a linha de comentário é anexada.

Execução

Salve este arquivo como createcommentnode_example.htm no caminho do servidor (este arquivo e o node.xml devem estar no mesmo caminho em seu servidor). Na saída, obtemos o valor do atributo, pois Company é o nó pai .

Criar novo nó de seção CDATA

O método createCDATASection () cria um novo nó de seção CDATA. Se o nó de seção CDATA recém-criado existir no objeto de elemento, ele será substituído pelo novo.

Sintaxe

A sintaxe para usar createCDATASection () é a seguinte -

var_name = xmldoc.createCDATASection("tagname");

Onde,

  • var_name - é o nome da variável definida pelo usuário que contém o nome do novo nó da seção CDATA.

  • ("tagname") - é o nome do novo nó de seção CDATA a ser criado.

Exemplo

O exemplo a seguir (createcdatanode_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria um novo nó de seção CDATA, "Criar Exemplo CDATA" no 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>

No exemplo acima -

  • create_CDATA = xmlDoc.createCDATASection ("Criar Exemplo CDATA") cria um novo nó de seção CDATA, "Criar Exemplo CDATA"

  • x.appendChild (create_CDATA) aqui, x contém o elemento especificado <Employee> indexado em 0 ao qual o valor do nó CDATA é anexado.

Execução

Salve este arquivo como createcdatanode_example.htm no caminho do servidor (este arquivo e node.xml devem estar no mesmo caminho em seu servidor). Na saída, obtemos o valor do atributo como Criar exemplo CDATA .

Criar novo nó de atributo

Para criar um novo nó de atributo, o método setAttributeNode () é usado. Se o nó de atributo recém-criado existir no objeto de elemento, ele será substituído pelo novo.

Sintaxe

A sintaxe para usar o método createElement () é a seguinte -

var_name = xmldoc.createAttribute("tagname");

Onde,

  • var_name - é o nome da variável definida pelo usuário que contém o nome do novo nó de atributo.

  • ("tagname") - é o nome do novo nó de atributo a ser criado.

Exemplo

O exemplo a seguir (createattributenode_example.htm) analisa um documento XML ( node.xml ) em um objeto XML DOM e cria uma nova seção de nó de atributo no 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>

No exemplo acima -

  • create_a = xmlDoc.createAttribute ("Category") cria um atributo com o nome <seção>.

  • create_a.nodeValue = "Management" cria o valor "A" para o atributo <seção>.

  • x [0] .setAttributeNode (create_a) este valor de atributo é definido para o elemento de nó <Employee> indexado em 0.