XML DOM - Sostituisci nodo

In questo capitolo, studieremo l'operazione di sostituzione del nodo in un oggetto DOM XML. Come sappiamo, tutto nel DOM viene mantenuto in un'unità informativa gerarchica nota come nodo e il nodo sostitutivo fornisce un altro modo per aggiornare questi nodi specificati o un nodo di testo.

Di seguito sono riportati i due metodi per sostituire i nodi.

  • replaceChild()
  • replaceData()

replaceChild ()

Il metodo replaceChild () sostituisce il nodo specificato con il nuovo nodo.

Sintassi

InsertData () ha la seguente sintassi:

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Dove,

  • newChild - è il nuovo nodo da inserire nell'elenco dei figli.

  • oldChild - è il nodo che viene sostituito nell'elenco.

  • Questo metodo restituisce il nodo sostituito.

Esempio

Il seguente esempio (replacenode_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e sostituisce il nodo specificato <FirstName> con il nuovo nodo <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>

Esecuzione

Salva questo file come replacenode_example.htm sul percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Otterremo l'output come mostrato di seguito -

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

Il metodo replaceData () sostituisce i caratteri che iniziano con l'offset di unità di 16 bit specificato con la stringa specificata.

Sintassi

ReplaceData () ha la seguente sintassi:

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

Dove

  • offset : è l'offset da cui iniziare la sostituzione.

  • count - è il numero di unità a 16 bit da sostituire. Se la somma di offset e conteggio supera la lunghezza, tutte le unità a 16 bit fino alla fine dei dati vengono sostituite.

  • arg - la DOMString con cui l'intervallo deve essere sostituito.

Esempio

Il seguente esempio ( replacingata_example.htm ) analizza un documento XML ( node.xml ) in un oggetto DOM XML e lo sostituisce.

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

Nell'esempio sopra -

  • x.replaceData (2,3, "999"); - Qui x contiene il testo dell'elemento specificato <ContactNo> il cui testo è sostituito dal nuovo testo "9999999" , a partire dalla posizione 1 fino alla lunghezza di 5 .

Esecuzione

Salva questo file come replacedata_example.htm sul percorso del server (questo file e node.xml dovrebbero essere sullo stesso percorso nel server). Otterremo l'output come mostrato di seguito -

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890