XML DOM - Crea nodo

In questo capitolo, discuteremo come creare nuovi nodi usando un paio di metodi dell'oggetto documento. Questi metodi forniscono un ambito per creare un nuovo nodo elemento, nodo testo, nodo commento, nodo sezione CDATA e nodo attributo . Se il nodo appena creato esiste già nell'oggetto elemento, viene sostituito da quello nuovo. Le sezioni seguenti lo dimostrano con esempi.

Crea un nuovo nodo Elemento

Il metodo createElement () crea un nuovo nodo elemento. Se il nodo dell'elemento appena creato esiste nell'oggetto dell'elemento, viene sostituito da quello nuovo.

Sintassi

La sintassi per utilizzare il metodo createElement () è la seguente:

var_name = xmldoc.createElement("tagname");

Dove,

  • var_name - è il nome della variabile definita dall'utente che contiene il nome del nuovo elemento.

  • ("tagname") - è il nome del nuovo nodo elemento da creare.

Esempio

Il seguente esempio (createnewelement_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e crea un nuovo nodo elemento PhoneNo nel documento 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");

         new_element = xmlDoc.createElement("PhoneNo");

         x = xmlDoc.getElementsByTagName("FirstName")[0];
         x.appendChild(new_element);

         document.write(x.getElementsByTagName("PhoneNo")[0].nodeName);
      </script>
   </body>
</html>
  • new_element = xmlDoc.createElement ("PhoneNo"); crea il nuovo nodo elemento <PhoneNo>

  • x.appendChild (new_element); x contiene il nome del nodo figlio specificato <FirstName> a cui viene aggiunto il nodo del nuovo elemento.

Esecuzione

Salva questo file come createnewelement_example.htm sul percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Nell'output otteniamo il valore dell'attributo come PhoneNo .

Crea un nuovo nodo di testo

Il metodo createTextNode () crea un nuovo nodo di testo.

Sintassi

La sintassi per utilizzare createTextNode () è la seguente:

var_name = xmldoc.createTextNode("tagname");

Dove,

  • var_name - è il nome della variabile definita dall'utente che contiene il nome del nuovo nodo di testo.

  • ("tagname") - tra parentesi c'è il nome del nuovo nodo di testo da creare.

Esempio

Il seguente esempio (createtextnode_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e crea un nuovo nodo di testo Im new text node nel documento 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");

         create_e = xmlDoc.createElement("PhoneNo");
         create_t = xmlDoc.createTextNode("Im new text node");
         create_e.appendChild(create_t);

         x = xmlDoc.getElementsByTagName("Employee")[0];
         x.appendChild(create_e);


         document.write(" PhoneNO: ");
         document.write(x.getElementsByTagName("PhoneNo")[0].childNodes[0].nodeValue);
      </script>
    </body>
</html>

I dettagli del codice sopra sono i seguenti:

  • create_e = xmlDoc.createElement ("PhoneNo"); crea un nuovo elemento < PhoneNo >.

  • create_t = xmlDoc.createTextNode ("Im new text node"); crea un nuovo nodo di testo "Im new text node" .

  • x.appendChild (create_e); il nodo di testo "Im new text node" viene aggiunto all'elemento < PhoneNo >.

  • document.write (x.getElementsByTagName ("PhoneNo") [0] .childNodes [0] .nodeValue); scrive il nuovo valore del nodo di testo nell'elemento <PhoneNo>.

Esecuzione

Salva questo file come createtextnode_example.htm sul percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Nell'output, otteniamo il valore dell'attributo come ad esempio PhoneNO: Im new text node .

Crea un nuovo nodo Commento

Il metodo createComment () crea un nuovo nodo di commento. Il nodo di commento è incluso nel programma per una facile comprensione della funzionalità del codice.

Sintassi

La sintassi per utilizzare createComment () è la seguente:

var_name = xmldoc.createComment("tagname");

Dove,

  • var_name - è il nome della variabile definita dall'utente che contiene il nome del nuovo nodo di commento.

  • ("tagname") - è il nome del nuovo nodo di commento da creare.

Esempio

Il seguente esempio (createcommentnode_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e crea un nuovo nodo di commento, "Company is the parent node" nel documento 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");

         create_comment = xmlDoc.createComment("Company is the parent node");

         x = xmlDoc.getElementsByTagName("Company")[0];

         x.appendChild(create_comment);

         document.write(x.lastChild.nodeValue);
      </script>
   </body>
</html>

Nell'esempio sopra -

  • create_comment = xmlDoc.createComment ("La società è il nodo padre") creates a specified comment line.

  • x.appendChild (create_comment) In questa riga, "x" contiene il nome dell'elemento <Company> a cui è aggiunta la riga di commento.

Esecuzione

Salvare questo file come createcommentnode_example.htm sul percorso del server (questo file e il node.xml dovrebbero trovarsi sullo stesso percorso nel server). Nell'output, otteniamo il valore dell'attributo poiché Company è il nodo padre .

Crea nuovo nodo sezione CDATA

Il metodo createCDATASection () crea un nuovo nodo di sezione CDATA. Se il nodo della sezione CDATA appena creato esiste nell'oggetto elemento, viene sostituito da quello nuovo.

Sintassi

La sintassi per utilizzare createCDATASection () è la seguente:

var_name = xmldoc.createCDATASection("tagname");

Dove,

  • var_name - è il nome della variabile definita dall'utente che contiene il nome del nuovo nodo della sezione CDATA.

  • ("tagname") - è il nome del nuovo nodo della sezione CDATA da creare.

Esempio

Il seguente esempio (createcdatanode_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e crea un nuovo nodo di sezione CDATA, "Crea esempio CDATA" nel documento 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");

         create_CDATA = xmlDoc.createCDATASection("Create CDATA Example");

         x = xmlDoc.getElementsByTagName("Employee")[0];
         x.appendChild(create_CDATA);
         document.write(x.lastChild.nodeValue);
      </script>
   </body>
</html>

Nell'esempio sopra -

  • create_CDATA = xmlDoc.createCDATASection ("Crea esempio CDATA") crea un nuovo nodo di sezione CDATA, "Crea esempio CDATA"

  • x.appendChild (create_CDATA) qui, x contiene l'elemento specificato <Employee> indicizzato a 0 a cui viene aggiunto il valore del nodo CDATA.

Esecuzione

Salva questo file come createcdatanode_example.htm sul percorso del server (questo file e node.xml dovrebbero trovarsi sullo stesso percorso nel tuo server). Nell'output, otteniamo il valore dell'attributo come Crea esempio CDATA .

Crea un nuovo nodo Attribute

Per creare un nuovo nodo attributo, viene utilizzato il metodo setAttributeNode () . Se il nodo dell'attributo appena creato esiste nell'oggetto elemento, viene sostituito da quello nuovo.

Sintassi

La sintassi per utilizzare il metodo createElement () è la seguente:

var_name = xmldoc.createAttribute("tagname");

Dove,

  • var_name - è il nome della variabile definita dall'utente che contiene il nome del nuovo nodo dell'attributo.

  • ("tagname") - è il nome del nuovo nodo attributo da creare.

Esempio

Il seguente esempio (createattributenode_example.htm) analizza un documento XML ( node.xml ) in un oggetto DOM XML e crea una nuova sezione del nodo dell'attributo nel documento 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");

         create_a = xmlDoc.createAttribute("section");
         create_a.nodeValue = "A";

         x = xmlDoc.getElementsByTagName("Employee");
         x[0].setAttributeNode(create_a);
         document.write("New Attribute: ");
         document.write(x[0].getAttribute("section"));

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

Nell'esempio sopra -

  • create_a = xmlDoc.createAttribute ("Category") crea un attributo con il nome <section>.

  • create_a.nodeValue = "Management" crea il valore "A" per l'attributo <section>.

  • x [0] .setAttributeNode (create_a) questo valore dell'attributo è impostato sull'elemento del nodo <Employee> indicizzato a 0.