Учебники

XML DOM — Удалить узел

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

Ниже приведены методы, которые используются для операции удаления узла.

  • RemoveChild ()

  • removeAttribute ()

RemoveChild ()

removeAttribute ()

RemoveChild ()

Метод removeChild () удаляет дочерний узел, обозначенный oldChild, из списка дочерних и возвращает его. Удаление дочернего узла эквивалентно удалению текстового узла. Следовательно, удаление дочернего узла удаляет связанный с ним текстовый узел.

Синтаксис

Синтаксис для использования removeChild () следующий:

Node removeChild(Node oldChild) throws DOMException

Куда,

  • oldChild — это удаляемый узел.

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

oldChild — это удаляемый узел.

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

Пример — Удалить текущий узел

В следующем примере (removecurrentnode_example.htm) анализируется документ XML ( node.xml ) в объект DOM XML и удаляется указанный узел <ContactNo> из родительского узла.

<!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");

         document.write("<b>Before remove operation, total ContactNo elements: </b>");
         document.write(xmlDoc.getElementsByTagName("ContactNo").length);
         document.write("<br>");

         x = xmlDoc.getElementsByTagName("ContactNo")[0];
         x.parentNode.removeChild(x);

         document.write("<b>After remove operation, total ContactNo elements: </b>");
         document.write(xmlDoc.getElementsByTagName("ContactNo").length);
      </script>
   </body>
</html>

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

  • x = xmlDoc.getElementsByTagName («ContactNo») [0] получает элемент <ContactNo>, проиндексированный в 0.

  • x.parentNode.removeChild (х); удаляет элемент <ContactNo>, проиндексированный в 0, из родительского узла.

x = xmlDoc.getElementsByTagName («ContactNo») [0] получает элемент <ContactNo>, проиндексированный в 0.

x.parentNode.removeChild (х); удаляет элемент <ContactNo>, проиндексированный в 0, из родительского узла.

выполнение

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

Before remove operation, total ContactNo elements: 3
After remove operation, total ContactNo elements: 2 

Пример — удаление текстового узла

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

<!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("FirstName")[0];

         document.write("<b>Text node of child node before removal is:</b> ");
         document.write(x.childNodes.length);
         document.write("<br>");

         y = x.childNodes[0];
         x.removeChild(y);
         document.write("<b>Text node of child node after removal is:</b> ");
         document.write(x.childNodes.length);

      </script>
   </body>
</html>

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

  • x = xmlDoc.getElementsByTagName («FirstName») [0]; — получает первый элемент <FirstName> в x, проиндексированный в 0.

  • y = x.childNodes [0]; — в этой строке y содержит дочерний узел, который нужно удалить.

  • x.removeChild (у); — удаляет указанный дочерний узел.

x = xmlDoc.getElementsByTagName («FirstName») [0]; — получает первый элемент <FirstName> в x, проиндексированный в 0.

y = x.childNodes [0]; — в этой строке y содержит дочерний узел, который нужно удалить.

x.removeChild (у); — удаляет указанный дочерний узел.

выполнение

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

Text node of child node before removal is: 1
Text node of child node after removal is: 0 

removeAttribute ()

Метод removeAttribute () удаляет атрибут элемента по имени.

Синтаксис

Синтаксис для использования removeAttribute () выглядит следующим образом —

void removeAttribute(java.lang.String name) throws DOMException

Куда,

  • name — это имя атрибута, который нужно удалить.

name — это имя атрибута, который нужно удалить.

пример

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

<!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('Employee');

         document.write(x[1].getAttribute('category'));
         document.write("<br>");

         x[1].removeAttribute('category');

         document.write(x[1].getAttribute('category'));

      </script>
   </body>
</html>

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

  • document.write (х [1] .getAttribute ( ‘категория’)); — вызывается значение категории атрибута, проиндексированной на 1-й позиции.

  • х [1] .removeAttribute ( ‘категория’); — удаляет значение атрибута.

document.write (х [1] .getAttribute ( ‘категория’)); — вызывается значение категории атрибута, проиндексированной на 1-й позиции.

х [1] .removeAttribute ( ‘категория’); — удаляет значение атрибута.

выполнение

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