DOM XML - Nút Thay thế

Trong chương này, chúng ta sẽ nghiên cứu về hoạt động thay thế nút trong một đối tượng DOM XML. Như chúng ta biết mọi thứ trong DOM được duy trì trong một đơn vị thông tin phân cấp được gọi là nút và nút thay thế cung cấp một cách khác để cập nhật các nút được chỉ định này hoặc một nút văn bản.

Sau đây là hai phương pháp để thay thế các nút.

  • replaceChild()
  • replaceData()

ReplaceChild ()

Phương thức ReplaceChild () thay thế nút được chỉ định bằng nút mới.

Cú pháp

InsertData () có cú pháp sau:

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Ở đâu,

  • newChild - là nút mới để đưa vào danh sách con.

  • oldChild - là nút được thay thế trong danh sách.

  • Phương thức này trả về nút được thay thế.

Thí dụ

Ví dụ sau (Replacenode_example.htm) phân tích cú pháp một tài liệu XML ( node.xml ) thành một đối tượng XML DOM và thay thế nút được chỉ định <Tên đầu tiên> bằng nút mới <Tên>.

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

Chấp hành

Lưu tệp này dưới dạng Replacenode_example.htm trên đường dẫn máy chủ (tệp này và node.xml phải nằm trên cùng một đường dẫn trong máy chủ của bạn). Chúng ta sẽ nhận được kết quả như hình dưới đây -

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

ReplaceData ()

Phương thức ReplaceData () thay thế các ký tự bắt đầu từ độ lệch đơn vị 16 bit được chỉ định bằng chuỗi được chỉ định.

Cú pháp

ReplaceData () có cú pháp sau:

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

Ở đâu

  • offset - là độ lệch mà từ đó bắt đầu thay thế.

  • count - là số đơn vị 16 bit cần thay thế. Nếu tổng độ lệch và số đếm vượt quá độ dài, thì tất cả các đơn vị 16 bit cho đến cuối dữ liệu sẽ được thay thế.

  • arg - chuỗi DOM mà phạm vi phải được thay thế.

Thí dụ

Ví dụ sau ( Replaceata_example.htm ) phân tích cú pháp một tài liệu XML ( node.xml ) thành một đối tượng DOM XML và thay thế nó.

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

Trong ví dụ trên -

  • x.replaceData (2,3, "999"); - Ở đây x giữ văn bản của phần tử được chỉ định <ContactNo> có văn bản được thay thế bằng văn bản mới "9999999" , bắt đầu từ vị trí 1 cho đến độ dài 5 .

Chấp hành

Lưu tập tin này như replacedata_example.htm trên con đường máy chủ (tập tin này và node.xml nên trên cùng một con đường trong máy chủ của bạn). Chúng ta sẽ nhận được kết quả như hình dưới đây -

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890