XML DOM - Ganti Node

Pada bab ini, kita akan mempelajari tentang operasi node replace dalam objek XML DOM. Seperti yang kita ketahui, semua yang ada di DOM dikelola dalam unit informasional hierarkis yang dikenal sebagai node dan node pengganti menyediakan cara lain untuk memperbarui node tertentu atau node teks.

Berikut adalah dua metode untuk mengganti node.

  • replaceChild()
  • replaceData()

replaceChild ()

Metode replaceChild () menggantikan node yang ditentukan dengan node baru.

Sintaksis

InsertData () memiliki sintaks berikut -

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Dimana,

  • newChild - adalah simpul baru untuk dimasukkan ke dalam daftar anak.

  • oldChild - adalah node yang diganti dalam daftar.

  • Metode ini mengembalikan node yang diganti.

Contoh

Contoh berikut (replacenode_example.htm) mem-parsing dokumen XML ( node.xml ) menjadi objek XML DOM dan menggantikan node yang ditentukan <FirstName> dengan node baru <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>

Eksekusi

Simpan file ini sebagai replacenode_example.htm di jalur server (file dan node.xml ini harus berada di jalur yang sama di server Anda). Kami akan mendapatkan output seperti yang ditunjukkan di bawah ini -

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

Metode replaceData () menggantikan karakter yang dimulai pada unit 16-bit offset yang ditentukan dengan string yang ditentukan.

Sintaksis

ReplaceData () memiliki sintaks berikut -

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

Dimana

  • offset - adalah offset untuk mulai mengganti.

  • count - adalah jumlah unit 16-bit yang akan diganti. Jika jumlah offset dan hitungan melebihi panjang, maka semua unit 16-bit hingga akhir data diganti.

  • arg - DOMString yang rentangnya harus diganti.

Contoh

Contoh berikut ( replaceata_example.htm ) menguraikan dokumen XML ( node.xml ) menjadi objek XML DOM dan menggantikannya.

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

Dalam contoh di atas -

  • x.replaceData (2,3, "999"); - Di sini x menampung teks dari elemen yang ditentukan <ContactNo> yang teksnya diganti dengan teks baru "9999999" , mulai dari posisi 1 hingga panjang 5 .

Eksekusi

Simpan file ini sebagai replacedata_example.htm pada jalur server (file ini dan node.xml harus berada di jalan yang sama di server Anda). Kami akan mendapatkan output seperti yang ditunjukkan di bawah ini -

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890