XML DOM - Установить узел

В этой главе мы изучим, как изменить значения узлов в объекте XML DOM. Значение узла можно изменить следующим образом -

var value = node.nodeValue;

Если узел является атрибутом, тогда переменная значения будет значением атрибута; если узел является текстовым узлом, это будет текстовое содержимое; если узел является элементом, он будет нулевым .

В следующих разделах будет продемонстрирована настройка значения узла для каждого типа узла (атрибут, текстовый узел и элемент).

Node.xml используется во всех следующих примерах, как показано ниже -

<Company>
   <Employee category = "Technical">
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
      <Email>[email protected]</Email>
   </Employee>
   
   <Employee category = "Non-Technical">
      <FirstName>Taniya</FirstName>
      <LastName>Mishra</LastName>
      <ContactNo>1234667898</ContactNo>
      <Email>[email protected]</Email>
   </Employee>
   
   <Employee category = "Management">
      <FirstName>Tanisha</FirstName>
      <LastName>Sharma</LastName>
      <ContactNo>1234562350</ContactNo>
      <Email>[email protected]</Email>
   </Employee>
</Company>

Изменить значение текстового узла

Когда мы говорим об изменении значения элемента Node, мы имеем в виду редактировать текстовое содержимое элемента (который также называется текстовым узлом ). В следующем примере показано, как изменить текстовый узел элемента.

пример

В следующем примере (set_text_node_example.htm) XML-документ ( node.xml ) анализируется на объект XML DOM и изменяется значение текстового узла элемента. В этом случае отправьте электронное письмо каждому сотруднику на адрес [email protected] и распечатайте значения.

<!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("Email");
         for(i = 0;i<x.length;i++) {	
	
            x[i].childNodes[0].nodeValue = "[email protected]";
            document.write(i+');
            document.write(x[i].childNodes[0].nodeValue);
            document.write('<br>');
         }
	
      </script>
   </body>
</html>

Исполнение

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

0) [email protected]
1) [email protected]
2) [email protected]

Изменить значение узла атрибута

В следующем примере показано, как изменить узел атрибута элемента.

пример

В следующем примере (set_attribute_example.htm) XML-документ ( node.xml ) преобразуется в объект XML DOM и изменяется значение узла атрибута элемента. В этом случае, Категория каждого Работника к админам-0, админы-1, админы-2 соответственно и вывести значение.

<!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");
         for(i = 0 ;i<x.length;i++){	
	
            newcategory = x[i].getAttributeNode('category');
            newcategory.nodeValue = "admin-"+i;
            document.write(i+');
            document.write(x[i].getAttributeNode('category').nodeValue);
            document.write('<br>');
         }
	
      </script>
   </body>
</html>

Исполнение

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

0) admin-0
1) admin-1
2) admin-2