DOM XML - Créer un nœud

Dans ce chapitre, nous verrons comment créer de nouveaux nœuds à l'aide de quelques méthodes de l'objet document. Ces méthodes fournissent une portée pour créer un nouveau nœud d'élément, un nœud de texte, un nœud de commentaire, un nœud de section CDATA et un nœud d'attribut . Si le nœud nouvellement créé existe déjà dans l'objet élément, il est remplacé par le nouveau. Les sections suivantes illustrent cela avec des exemples.

Créer un nouveau nœud d' élément

La méthode createElement () crée un nouveau nœud d'élément. Si le nœud d'élément nouvellement créé existe dans l'objet d'élément, il est remplacé par le nouveau.

Syntaxe

La syntaxe pour utiliser la méthode createElement () est la suivante -

var_name = xmldoc.createElement("tagname");

Où,

  • var_name - est le nom de variable défini par l'utilisateur qui contient le nom du nouvel élément.

  • ("tagname") - est le nom du nouveau nœud d'élément à créer.

Exemple

L'exemple suivant (createnewelement_example.htm) analyse un document XML ( node.xml ) dans un objet DOM XML et crée un nouveau nœud d'élément PhoneNo dans le document 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"); crée le nouveau nœud d'élément <PhoneNo>

  • x.appendChild (nouvel_élément); x contient le nom du nœud enfant spécifié <FirstName> auquel le nouveau nœud d'élément est ajouté.

Exécution

Enregistrez ce fichier sous createnewelement_example.htm sur le chemin du serveur (ce fichier et node.xml doivent être sur le même chemin sur votre serveur). Dans la sortie, nous obtenons la valeur d'attribut comme PhoneNo .

Créer un nouveau nœud de texte

La méthode createTextNode () crée un nouveau nœud de texte.

Syntaxe

La syntaxe pour utiliser createTextNode () est la suivante -

var_name = xmldoc.createTextNode("tagname");

Où,

  • var_name - c'est le nom de variable défini par l'utilisateur qui contient le nom du nouveau nœud de texte.

  • ("tagname") - entre parenthèses se trouve le nom du nouveau nœud de texte à créer.

Exemple

L'exemple suivant (createtextnode_example.htm) analyse un document XML ( node.xml ) dans un objet DOM XML et crée un nouveau nœud de texte Im nouveau nœud de texte dans le document 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>

Les détails du code ci-dessus sont comme ci-dessous -

  • create_e = xmlDoc.createElement ("PhoneNo"); crée un nouvel élément < PhoneNo >.

  • create_t = xmlDoc.createTextNode ("Im nouveau noeud de texte"); crée un nouveau nœud de texte "Im nouveau nœud de texte" .

  • x.appendChild (create_e); le nœud de texte, "Im nouveau nœud de texte" est ajouté à l'élément, < PhoneNo >.

  • document.write (x.getElementsByTagName ("PhoneNo") [0] .childNodes [0] .nodeValue); écrit la nouvelle valeur du nœud de texte dans l'élément <PhoneNo>.

Exécution

Enregistrez ce fichier sous le nom createtextnode_example.htm sur le chemin du serveur (ce fichier et node.xml doivent être sur le même chemin sur votre serveur). Dans la sortie, nous obtenons la valeur d'attribut comme par exemple PhoneNO: Im new text node .

Créer un nouveau nœud de commentaire

La méthode createComment () crée un nouveau nœud de commentaire. Le nœud de commentaire est inclus dans le programme pour une compréhension facile de la fonctionnalité du code.

Syntaxe

La syntaxe pour utiliser createComment () est la suivante -

var_name = xmldoc.createComment("tagname");

Où,

  • var_name - est le nom de variable défini par l'utilisateur qui contient le nom du nouveau nœud de commentaire.

  • ("tagname") - est le nom du nouveau nœud de commentaire à créer.

Exemple

L'exemple suivant (createcommentnode_example.htm) analyse un document XML ( node.xml ) dans un objet DOM XML et crée un nouveau nœud de commentaire, "La société est le nœud parent" dans le document 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>

Dans l'exemple ci-dessus -

  • create_comment = xmlDoc.createComment ("La société est le nœud parent") creates a specified comment line.

  • x.appendChild (create_comment) Dans cette ligne, 'x' contient le nom de l'élément <Company> auquel la ligne de commentaire est ajoutée.

Exécution

Enregistrez ce fichier sous le nom createcommentnode_example.htm sur le chemin du serveur (ce fichier et le node.xml doivent être sur le même chemin sur votre serveur). Dans la sortie, nous obtenons la valeur de l'attribut car Company est le nœud parent .

Créer un nouveau nœud de section CDATA

La méthode createCDATASection () crée un nouveau nœud de section CDATA. Si le nœud de section CDATA nouvellement créé existe dans l'objet d'élément, il est remplacé par le nouveau.

Syntaxe

La syntaxe pour utiliser createCDATASection () est la suivante -

var_name = xmldoc.createCDATASection("tagname");

Où,

  • var_name - est le nom de variable défini par l'utilisateur qui contient le nom du nouveau nœud de la section CDATA.

  • ("tagname") - est le nom du nouveau nœud de section CDATA à créer.

Exemple

L'exemple suivant (createcdatanode_example.htm) analyse un document XML ( node.xml ) dans un objet XML DOM et crée un nouveau nœud de section CDATA, "Créer un exemple CDATA" dans le document 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>

Dans l'exemple ci-dessus -

  • create_CDATA = xmlDoc.createCDATASection ("Créer un exemple CDATA") crée un nouveau nœud de section CDATA, "Créer un exemple CDATA"

  • x.appendChild (create_CDATA) ici, x contient l'élément spécifié <Employee> indexé à 0 auquel la valeur du nœud CDATA est ajoutée.

Exécution

Enregistrez ce fichier sous createcdatanode_example.htm sur le chemin du serveur (ce fichier et node.xml doivent être sur le même chemin sur votre serveur). Dans la sortie, nous obtenons la valeur d'attribut comme Créer un exemple CDATA .

Créer un nouveau nœud d' attribut

Pour créer un nouveau nœud d'attribut, la méthode setAttributeNode () est utilisée. Si le nœud d'attribut nouvellement créé existe dans l'objet élément, il est remplacé par le nouveau.

Syntaxe

La syntaxe pour utiliser la méthode createElement () est la suivante -

var_name = xmldoc.createAttribute("tagname");

Où,

  • var_name - est le nom de variable défini par l'utilisateur qui contient le nom du nouveau nœud d'attribut.

  • ("tagname") - est le nom du nouveau nœud d'attribut à créer.

Exemple

L'exemple suivant (createattributenode_example.htm) analyse un document XML ( node.xml ) dans un objet DOM XML et crée une nouvelle section de nœud d'attribut dans le document 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>

Dans l'exemple ci-dessus -

  • create_a = xmlDoc.createAttribute ("Category") crée un attribut avec le nom <section>.

  • create_a.nodeValue = "Management" crée la valeur "A" pour l'attribut <section>.

  • x [0] .setAttributeNode (create_a) cette valeur d'attribut est définie sur l'élément de nœud <Employee> indexé à 0.