Учебники

XML DOM — заменить узел

В этой главе мы изучим операцию замены узла в объекте XML DOM. Как мы знаем, все в DOM поддерживается в иерархической информационной единице, известной как узел, и заменяющий узел предоставляет другой способ обновления этих указанных узлов или текстового узла.

Ниже приведены два метода замены узлов.

  • replaceChild ()
  • replaceData ()

replaceChild ()

Метод replaceChild () заменяет указанный узел новым узлом.

Синтаксис

InsertData () имеет следующий синтаксис —

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Куда,

  • newChild — это новый узел для добавления в дочерний список.

  • oldChild — это заменяемый узел в списке.

  • Этот метод возвращает замененный узел.

newChild — это новый узел для добавления в дочерний список.

oldChild — это заменяемый узел в списке.

Этот метод возвращает замененный узел.

пример

В следующем примере (replacenode_example.htm) выполняется синтаксический анализ XML-документа ( node.xml ) в объект XML DOM и замена указанного узла <FirstName> новым узлом <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>

выполнение

Сохраните этот файл как replacenode_example.htm на пути к серверу (этот файл и файл node.xml должны находиться на одном и том же пути на вашем сервере). Мы получим вывод, как показано ниже —

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

Метод replaceData () заменяет символы, начинающиеся с указанного 16-разрядного смещения, указанной строкой.

Синтаксис

ReplaceData () имеет следующий синтаксис —

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

куда

  • смещение — это смещение, с которого начинается замена.

  • count — это количество 16-битных блоков для замены. Если сумма смещения и счетчика превышает длину, то все 16-битные единицы до конца данных заменяются.

  • argстрока DOMString, с которой необходимо заменить диапазон.

смещение — это смещение, с которого начинается замена.

count — это количество 16-битных блоков для замены. Если сумма смещения и счетчика превышает длину, то все 16-битные единицы до конца данных заменяются.

argстрока DOMString, с которой необходимо заменить диапазон.

пример

В следующем примере ( replaceata_example.htm ) анализируется документ XML ( node.xml ) в объект XML DOM и заменяется его.

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

В приведенном выше примере —

  • x.replaceData (2,3, «999»); — Здесь x содержит текст указанного элемента <ContactNo>, текст которого заменяется новым текстом «9999999» , начиная с позиции 1 до длины 5 .

x.replaceData (2,3, «999»); — Здесь x содержит текст указанного элемента <ContactNo>, текст которого заменяется новым текстом «9999999» , начиная с позиции 1 до длины 5 .

выполнение

Сохраните этот файл как replaceata_example.htm на пути к серверу (этот файл и файл node.xml должны находиться на одном и том же пути на вашем сервере). Мы получим вывод, как показано ниже —