XML DOM - Imposta nodo

In questo capitolo, studieremo come modificare i valori dei nodi in un oggetto DOM XML. Il valore del nodo può essere modificato come segue:

var value = node.nodeValue;

Se il nodo è un attributo, la variabile del valore sarà il valore dell'attributo; se il nodo è un nodo di testo sarà il contenuto del testo; se il nodo è un elemento sarà nullo .

Le sezioni seguenti illustreranno l'impostazione del valore del nodo per ogni tipo di nodo (attributo, nodo di testo ed elemento).

Il node.xml utilizzato in tutti i seguenti esempi è il seguente:

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

Modifica il valore del nodo di testo

Quando diciamo il valore di modifica dell'elemento Nodo, intendiamo modificare il contenuto di testo di un elemento (che è anche chiamato nodo di testo ). L'esempio seguente mostra come modificare il nodo di testo di un elemento.

Esempio

Il seguente esempio (set_text_node_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e modifica il valore del nodo di testo di un elemento. In questo caso, inviare un'e-mail di ciascun dipendente a [email protected] e stampare i valori.

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

Esecuzione

Salva questo file come set_text_node_example.htm nel percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Riceverai il seguente output:

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

Modifica valore del nodo attributo

L'esempio seguente mostra come modificare il nodo dell'attributo di un elemento.

Esempio

Il seguente esempio (set_attribute_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e cambia il valore del nodo dell'attributo di un elemento. In questo caso, la categoria di ciascun dipendente su admin-0, admin-1, admin-2 rispettivamente e stampa i valori.

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

Esecuzione

Salvare questo file come set_node_attribute_example.htm nel percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel server). Il risultato sarebbe il seguente:

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