DOM XML - Remplacer le nœud

Dans ce chapitre, nous étudierons l'opération de remplacement de nœud dans un objet DOM XML. Comme nous le savons, tout dans le DOM est maintenu dans une unité d'information hiérarchique connue sous le nom de nœud et le nœud de remplacement fournit un autre moyen de mettre à jour ces nœuds spécifiés ou un nœud de texte.

Voici les deux méthodes pour remplacer les nœuds.

  • replaceChild()
  • replaceData()

replaceChild ()

La méthode replaceChild () remplace le nœud spécifié par le nouveau nœud.

Syntaxe

InsertData () a la syntaxe suivante -

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Où,

  • newChild - est le nouveau nœud à mettre dans la liste des enfants.

  • oldChild - est le nœud remplacé dans la liste.

  • Cette méthode renvoie le nœud remplacé.

Exemple

L'exemple suivant (replacenode_example.htm) analyse un document XML ( node.xml ) dans un objet DOM XML et remplace le nœud spécifié <FirstName> par le nouveau nœud <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>

Exécution

Enregistrez ce fichier sous le nom replacenode_example.htm sur le chemin du serveur (ce fichier et node.xml doivent être sur le même chemin sur votre serveur). Nous obtiendrons la sortie comme indiqué ci-dessous -

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

La méthode replaceData () remplace les caractères commençant au décalage d'unité 16 bits spécifié par la chaîne spécifiée.

Syntaxe

Le replaceData () a la syntaxe suivante -

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

  • offset - est le décalage à partir duquel commencer le remplacement.

  • count - est le nombre d'unités 16 bits à remplacer. Si la somme du décalage et du nombre dépasse la longueur, toutes les unités 16 bits jusqu'à la fin des données sont remplacées.

  • arg - la DOMString avec laquelle la plage doit être remplacée.

Exemple

L'exemple suivant ( replaceata_example.htm ) analyse un document XML ( node.xml ) dans un objet DOM XML et le remplace.

<!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>

Dans l'exemple ci-dessus -

  • x.replaceData (2,3, "999"); - Ici x contient le texte de l'élément spécifié <ContactNo> dont le texte est remplacé par le nouveau texte "9999999" , à partir de la position 1 jusqu'à la longueur de 5 .

Exécution

Enregistrez ce fichier sous replacedata_example.htm sur le chemin du serveur (ce fichier et node.xml doivent être sur le même chemin dans votre serveur). Nous obtiendrons la sortie comme indiqué ci-dessous -

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890