XML DOM - Kurzanleitung

Das Document OObjekt MOdel (DOM) ist ein W3C-Standard. Es definiert einen Standard für den Zugriff auf Dokumente wie HTML und XML.

Die vom W3C festgelegte Definition von DOM lautet -

Das Document Object Model (DOM) ist eine Anwendungsprogrammierschnittstelle (API) für HTML- und XML-Dokumente. Es definiert die logische Struktur von Dokumenten und die Art und Weise, wie auf ein Dokument zugegriffen und es bearbeitet wird.

DOM definiert die Objekte sowie Eigenschaften und Methoden (Schnittstelle) für den Zugriff auf alle XML-Elemente. Es ist in 3 verschiedene Teile / Ebenen unterteilt -

  • Core DOM - Standardmodell für jedes strukturierte Dokument

  • XML DOM - Standardmodell für XML-Dokumente

  • HTML DOM - Standardmodell für HTML-Dokumente

XML DOM ist ein Standardobjektmodell für XML. XML-Dokumente haben eine Hierarchie von Informationseinheiten, die als Knoten bezeichnet werden . DOM ist eine Standardprogrammierschnittstelle zur Beschreibung dieser Knoten und der Beziehungen zwischen ihnen.

Als XML bietet DOM auch eine API, mit der Entwickler an jedem Punkt der Baumstruktur Knoten hinzufügen, bearbeiten, verschieben oder entfernen können, um eine Anwendung zu erstellen.

Es folgt das Diagramm für die DOM-Struktur. Das Diagramm zeigt, dass der Parser ein XML-Dokument als DOM-Struktur auswertet, indem er jeden Knoten durchläuft.

Vorteile von XML DOM

Im Folgenden sind die Vorteile von XML DOM aufgeführt.

  • XML DOM ist sprach- und plattformunabhängig.

  • XML DOM ist traversable - Informationen in XML DOM sind in einer Hierarchie organisiert, die es Entwicklern ermöglicht, in der Hierarchie nach bestimmten Informationen zu suchen.

  • XML DOM ist modifiable - Es ist dynamischer Natur und bietet dem Entwickler die Möglichkeit, an jedem Punkt des Baums Knoten hinzuzufügen, zu bearbeiten, zu verschieben oder zu entfernen.

Nachteile von XML DOM

  • Es verbraucht mehr Speicher (wenn die XML-Struktur groß ist), da das einmal geschriebene Programm die ganze Zeit im Speicher bleibt, bis es explizit entfernt wird.

  • Aufgrund der umfangreichen Speichernutzung ist die Betriebsgeschwindigkeit im Vergleich zu SAX langsamer.

Nachdem wir nun wissen, was DOM bedeutet, wollen wir sehen, was eine DOM-Struktur ist. Ein DOM-Dokument ist eine Sammlung von Knoten oder Informationen, die in einer Hierarchie organisiert sind. Einige Arten von Knoten können Kind Knoten verschiedenen Typen und andere Blattknoten , die nichts unter sie in der Dokumentstruktur haben können. Im Folgenden finden Sie eine Liste der Knotentypen mit einer Liste der Knotentypen, die sie möglicherweise als untergeordnete Knoten haben.

  • Document - Element (maximal eins), ProcessingInstruction, Comment, DocumentType (maximal eins)

  • DocumentFragment - Element, ProcessingInstruction, Kommentar, Text, CDATASection, EntityReference

  • EntityReference - Element, ProcessingInstruction, Kommentar, Text, CDATASection, EntityReference

  • Element - Element, Text, Kommentar, Verarbeitungsanweisung, CDATASection, EntityReference

  • Attr - Text, EntityReference

  • ProcessingInstruction - Keine Kinder

  • Comment - Keine Kinder

  • Text - Keine Kinder

  • CDATASection - Keine Kinder

  • Entity - Element, ProcessingInstruction, Kommentar, Text, CDATASection, EntityReference

  • Notation - Keine Kinder

Beispiel

Betrachten Sie die DOM-Darstellung des folgenden XML-Dokuments node.xml.

<?xml version = "1.0"?>
<Company>
   <Employee category = "technical">
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
   </Employee>
   
   <Employee category = "non-technical">
      <FirstName>Taniya</FirstName>
      <LastName>Mishra</LastName>
      <ContactNo>1234667898</ContactNo>
   </Employee>
</Company>

Das Dokumentobjektmodell des obigen XML-Dokuments lautet wie folgt:

Aus dem obigen Flussdiagramm können wir schließen -

  • Das Knotenobjekt kann nur ein übergeordnetes Knotenobjekt haben . Dies nimmt die Position über allen Knoten ein. Hier ist es Gesellschaft .

  • Der übergeordnete Knoten kann mehrere Knoten haben, die als untergeordnete Knoten bezeichnet werden. Diese untergeordneten Knoten können zusätzliche Knoten haben, die als Attributknoten bezeichnet werden. Im obigen Beispiel haben wir zwei Attributknoten Technisch und Nichttechnisch . Der Attributknoten ist eigentlich kein untergeordnetes Element des Elementknotens, ist ihm jedoch weiterhin zugeordnet.

  • Diese untergeordneten Knoten können wiederum mehrere untergeordnete Knoten haben. Der Text innerhalb des Knoten wird der genannte Text - Knoten.

  • Die Knotenobjekte auf derselben Ebene werden als Geschwister bezeichnet.

  • Das DOM identifiziert -

    • die Objekte, die die Schnittstelle darstellen und das Dokument bearbeiten sollen.

    • die Beziehung zwischen den Objekten und Schnittstellen.

In diesem Kapitel werden wir uns mit den XML-DOM- Knoten befassen . Jedes XML-DOM enthält die Informationen in hierarchischen Einheiten, die als Knoten bezeichnet werden, und das DOM beschreibt diese Knoten und die Beziehung zwischen ihnen.

Knotentypen

Das folgende Flussdiagramm zeigt alle Knotentypen -

Die häufigsten Knotentypen in XML sind -

  • Document Node- Die vollständige XML-Dokumentstruktur ist ein Dokumentknoten .

  • Element Node- Jedes XML-Element ist ein Elementknoten . Dies ist auch der einzige Knotentyp, der Attribute haben kann.

  • Attribute Node- Jedes Attribut wird als Attributknoten betrachtet . Es enthält Informationen zu einem Elementknoten, wird jedoch nicht als untergeordnete Elemente des Elements betrachtet.

  • Text Node- Die Dokumenttexte gelten als Textknoten . Es kann aus mehr Informationen oder nur Leerzeichen bestehen.

Einige weniger verbreitete Knotentypen sind -

  • CData Node- Dieser Knoten enthält Informationen, die vom Parser nicht analysiert werden sollten. Stattdessen sollte es nur als einfacher Text weitergegeben werden.

  • Comment Node - Dieser Knoten enthält Informationen zu den Daten und wird von der Anwendung normalerweise ignoriert.

  • Processing Instructions Node - Dieser Knoten enthält Informationen, die speziell auf die Anwendung ausgerichtet sind.

  • Document Fragments Node

  • Entities Node

  • Entity reference nodes

  • Notations Node

In diesem Kapitel werden wir uns mit dem XML-DOM- Knotenbaum befassen. In einem XML-Dokument werden die Informationen in einer hierarchischen Struktur verwaltet. Diese hierarchische Struktur wird als Knotenbaum bezeichnet . Diese Hierarchie ermöglicht es einem Entwickler, im Baum nach bestimmten Informationen zu suchen, sodass Knoten darauf zugreifen können. Der Inhalt dieser Knoten kann dann aktualisiert werden.

Die Struktur des Knotenbaums beginnt mit dem Stammelement und erstreckt sich bis zur untersten Ebene auf die untergeordneten Elemente.

Beispiel

Das folgende Beispiel zeigt ein einfaches XML-Dokument, dessen Knotenbaum Struktur ist. Das folgende Diagramm zeigt Folgendes:

<?xml version = "1.0"?>
<Company>
   <Employee category = "Technical">
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
   </Employee>
   <Employee category = "Non-Technical">
      <FirstName>Taniya</FirstName>
      <LastName>Mishra</LastName>
      <ContactNo>1234667898</ContactNo>
   </Employee>
</Company>

Wie im obigen Beispiel zu sehen ist, dessen bildliche Darstellung (seines DOM) wie unten gezeigt ist -

  • Der oberste Knoten eines Baumes heißt root. DasrootKnoten ist <Unternehmen>, das wiederum die beiden Knoten von <Mitarbeiter> enthält. Diese Knoten werden als untergeordnete Knoten bezeichnet.

  • Der untergeordnete Knoten <Employee> des Stammknotens <Company> besteht wiederum aus einem eigenen untergeordneten Knoten (<FirstName>, <LastName>, <ContactNo>).

  • Die beiden untergeordneten Knoten <Mitarbeiter> haben Attributwerte Technisch und Nichttechnisch und werden als Attributknoten bezeichnet .

  • Der Text in jedem Knoten wird als Textknoten bezeichnet .

XML DOM - Methoden

DOM als API enthält Schnittstellen, die verschiedene Arten von Informationen darstellen, die in einem XML-Dokument enthalten sind, z. B. Elemente und Text. Diese Schnittstellen enthalten die Methoden und Eigenschaften, die für die Arbeit mit diesen Objekten erforderlich sind. Eigenschaften definieren die Eigenschaften des Knotens, während Methoden die Möglichkeit bieten, die Knoten zu bearbeiten.

In der folgenden Tabelle sind die DOM-Klassen und -Schnittstellen aufgeführt.

S.No. Schnittstelle & Beschreibung
1

DOMImplementation

Es bietet eine Reihe von Methoden zum Ausführen von Vorgängen, die von einer bestimmten Instanz des Dokumentobjektmodells unabhängig sind.

2

DocumentFragment

Es ist das "leichte" oder "minimale" Dokumentobjekt und verankert (als Oberklasse des Dokuments) den XML / HTML-Baum in einem vollwertigen Dokument.

3

Document

Es stellt den Knoten der obersten Ebene des XML-Dokuments dar, der Zugriff auf alle Knoten im Dokument einschließlich des Stammelements bietet.

4

Node

Es repräsentiert den XML-Knoten.

5

NodeList

Es stellt eine schreibgeschützte Liste von Knotenobjekten dar .

6

NamedNodeMap

Es stellt Sammlungen von Knoten dar, auf die über den Namen zugegriffen werden kann.

7

Data

Es erweitert Node um eine Reihe von Attributen und Methoden für den Zugriff auf Zeichendaten im DOM.

8

Attribute

Es repräsentiert ein Attribut in einem Element-Objekt.

9

Element

Es repräsentiert den Elementknoten. Leitet vom Knoten ab.

10

Text

Es repräsentiert den Textknoten. Wird von CharacterData abgeleitet.

11

Comment

Es repräsentiert den Kommentarknoten. Wird von CharacterData abgeleitet.

12

ProcessingInstruction

Es stellt eine "Verarbeitungsanweisung" dar. Es wird in XML verwendet, um prozessorspezifische Informationen im Text des Dokuments zu speichern.

13

CDATA Section

Es repräsentiert den CDATA-Bereich. Leitet sich aus Text ab.

14

Entity

Es repräsentiert eine Entität. Leitet vom Knoten ab.

15

EntityReference

Dies stellt eine Entitätsreferenz im Baum dar. Leitet vom Knoten ab.

Wir werden die Methoden und Eigenschaften jeder der oben genannten Schnittstellen in ihren jeweiligen Kapiteln diskutieren.

In diesem Kapitel werden wir uns mit dem Laden und Parsen von XML befassen .

Um die von der API bereitgestellten Schnittstellen zu beschreiben, verwendet das W3C eine abstrakte Sprache, die als Interface Definition Language (IDL) bezeichnet wird. Der Vorteil der Verwendung von IDL besteht darin, dass der Entwickler lernt, wie er das DOM mit seiner Lieblingssprache verwendet, und problemlos in eine andere Sprache wechseln kann.

Der Nachteil ist, dass die IDL, da sie abstrakt ist, nicht direkt von Webentwicklern verwendet werden kann. Aufgrund der Unterschiede zwischen den Programmiersprachen müssen sie zwischen den abstrakten Schnittstellen und ihren konkreten Sprachen abgebildet oder gebunden werden. DOM wurde Programmiersprachen wie Javascript, JScript, Java, C, C ++, PLSQL, Python und Perl zugeordnet.

In den folgenden Abschnitten und Kapiteln verwenden wir Javascript als Programmiersprache zum Laden der XML-Datei.

Parser

Ein Parser ist eine Softwareanwendung, mit der ein Dokument, in unserem Fall ein XML-Dokument, analysiert und mit den Informationen etwas Bestimmtes getan werden kann. Einige der DOM-basierten Parser sind in der folgenden Tabelle aufgeführt:

S.No. Parser & Beschreibung
1

JAXP

Java-API von Sun Microsystem für XML-Analyse (JAXP)

2

XML4J

IBMs XML-Parser für Java (XML4J)

3

msxml

Der XML-Parser (msxml) von Microsoft, Version 2.0, ist in Internet Explorer 5.5 integriert

4

4DOM

4DOM ist ein Parser für die Programmiersprache Python

5

XML::DOM

XML :: DOM ist ein Perl-Modul zum Bearbeiten von XML-Dokumenten mit Perl

6

Xerces

Apaches Xerces Java Parser

In einer baumbasierten API wie DOM durchläuft der Parser die XML-Datei und erstellt die entsprechenden DOM-Objekte. Dann können Sie die DOM-Struktur hin und her durchlaufen.

Laden und Parsen von XML

Beim Laden eines XML-Dokuments kann der XML-Inhalt in zwei Formen vorliegen:

  • Direkt als XML-Datei
  • Als XML-Zeichenfolge

Inhalt als XML-Datei

Das folgende Beispiel zeigt, wie XML- Daten ( node.xml ) mit Ajax und Javascript geladen werden, wenn der XML-Inhalt als XML-Datei empfangen wird. Hier ruft die Ajax-Funktion den Inhalt einer XML-Datei ab und speichert ihn im XML-DOM. Sobald das DOM-Objekt erstellt wurde, wird es analysiert.

<!DOCTYPE html>
<html>
   <body>
      <div>
         <b>FirstName:</b> <span id = "FirstName"></span><br>
         <b>LastName:</b> <span id = "LastName"></span><br>
         <b>ContactNo:</b> <span id = "ContactNo"></span><br>
         <b>Email:</b> <span id = "Email"></span>
      </div>
      <script>
         //if browser supports XMLHttpRequest
            
            if (window.XMLHttpRequest) { // Create an instance of XMLHttpRequest object. 
               code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp  =  new XMLHttpRequest();
            } else { // code for IE6, IE5 
               xmlhttp  =  new ActiveXObject("Microsoft.XMLHTTP");
            }
   
         // sets and sends the request for calling "node.xml"
            xmlhttp.open("GET","/dom/node.xml",false);
            xmlhttp.send();

         // sets and returns the content as XML DOM
            xmlDoc = xmlhttp.responseXML;

         //parsing the DOM object
            document.getElementById("FirstName").innerHTML = 
               xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0].nodeValue;
            document.getElementById("LastName").innerHTML = 
               xmlDoc.getElementsByTagName("LastName")[0].childNodes[0].nodeValue;
            document.getElementById("ContactNo").innerHTML = 
               xmlDoc.getElementsByTagName("ContactNo")[0].childNodes[0].nodeValue;
            document.getElementById("Email").innerHTML = 
               xmlDoc.getElementsByTagName("Email")[0].childNodes[0].nodeValue;
      </script>
   </body>
</html>

node.xml

<Company> 
   <Employee category = "Technical" id = "firstelement"> 
      <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>

Die meisten Details des Codes befinden sich im Skriptcode.

  • Internet Explorer verwendet das ActiveXObject ("Microsoft.XMLHTTP") , um eine Instanz des XMLHttpRequest-Objekts zu erstellen. Andere Browser verwenden die XMLHttpRequest () -Methode.

  • Die responseXML transformiert den XML-Inhalt direkt in das XML-DOM.

  • Sobald der XML-Inhalt in JavaScript XML DOM umgewandelt wurde, können Sie mithilfe der JS DOM-Methoden und -Eigenschaften auf jedes XML-Element zugreifen. Wir haben die DOM-Eigenschaften wie childNodes , nodeValue und DOM-Methoden wie getElementsById (ID), getElementsByTagName (tags_name) verwendet.

Ausführung

Speichern Sie diese Datei als loadingexample.html und öffnen Sie sie in Ihrem Browser. Sie erhalten folgende Ausgabe:

Inhalt als XML-Zeichenfolge

Das folgende Beispiel zeigt, wie XML-Daten mit Ajax und Javascript geladen werden, wenn XML-Inhalte als XML-Datei empfangen werden. Hier ruft die Ajax-Funktion den Inhalt einer XML-Datei ab und speichert ihn im XML-DOM. Sobald das DOM-Objekt erstellt wurde, wird es analysiert.

<!DOCTYPE html>
<html>
   <head>
      <script>
         
         // loads the xml string in a dom object
         function loadXMLString(t) { // for non IE browsers
            if (window.DOMParser) {
               // create an instance for xml dom object parser = new DOMParser();
               xmlDoc = parser.parseFromString(t,"text/xml");
            }
            // code for IE
            else { // create an instance for xml dom object
               xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
               xmlDoc.async = false;
               xmlDoc.loadXML(t);
            }
            return xmlDoc;
         }
      </script>
   </head>
   <body>
      <script>
         
         // a variable with the string
            var text = "<Employee>";
            text = text+"<FirstName>Tanmay</FirstName>";
            text = text+"<LastName>Patil</LastName>";
            text = text+"<ContactNo>1234567890</ContactNo>";
            text = text+"<Email>[email protected]</Email>";
            text = text+"</Employee>";

         // calls the loadXMLString() with "text" function and store the xml dom in a variable
            var xmlDoc = loadXMLString(text);
	
         //parsing the DOM object
            y = xmlDoc.documentElement.childNodes;
            for (i = 0;i<y.length;i++) {
               document.write(y[i].childNodes[0].nodeValue);
               document.write("<br>");
            }
      </script>
   </body>
</html>

Die meisten Details des Codes befinden sich im Skriptcode.

  • Internet Explorer verwendet das ActiveXObject ("Microsoft.XMLDOM") , um XML-Daten in ein DOM-Objekt zu laden. Andere Browser verwenden die Funktion DOMParser () und die Methode parseFromString (text, 'text / xml') .

  • Der variable Text muss eine Zeichenfolge mit XML-Inhalt enthalten.

  • Sobald der XML-Inhalt in JavaScript-XML-DOM umgewandelt wurde, können Sie mithilfe von JS-DOM-Methoden und -Eigenschaften auf jedes XML-Element zugreifen. Wir haben DOM-Eigenschaften wie childNodes , nodeValue verwendet .

Ausführung

Speichern Sie diese Datei als loadingexample.html und öffnen Sie sie in Ihrem Browser. Sie sehen die folgende Ausgabe -

Nachdem wir gesehen haben, wie sich der XML-Inhalt in JavaScript-XML-DOM umwandelt, können Sie jetzt mithilfe der XML-DOM-Methoden auf jedes XML-Element zugreifen.

In diesem Kapitel werden wir uns mit XML DOM Traversing befassen. Wir haben im vorherigen Kapitel untersucht, wie XML-Dokumente geladen und das so erhaltene DOM-Objekt analysiert werden. Dieses analysierte DOM-Objekt kann durchlaufen werden. Das Durchlaufen ist ein Prozess, bei dem die Schleife systematisch durchgeführt wird, indem jedes einzelne Element Schritt für Schritt in einem Knotenbaum durchlaufen wird.

Beispiel

Das folgende Beispiel (traverse_example.htm) zeigt das DOM-Traversing. Hier durchlaufen wir jeden untergeordneten Knoten des <Employee> -Elements.

<!DOCTYPE html>
<html>
   <style>
      table,th,td {
         border:1px solid black;
         border-collapse:collapse
      }
   </style>
   <body>
      <div id = "ajax_xml"></div>
      <script>
         //if browser supports XMLHttpRequest
         if (window.XMLHttpRequest) {// Create an instance of XMLHttpRequest object. 
            code for IE7+, Firefox, Chrome, Opera, Safari
            var xmlhttp = new XMLHttpRequest();
         } else {// code for IE6, IE5
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         // sets and sends the request for calling "node.xml"
            xmlhttp.open("GET","/dom/node.xml",false);
            xmlhttp.send();

         // sets and returns the content as XML DOM
            var xml_dom = xmlhttp.responseXML;
	
         // this variable stores the code of the html table
            var html_tab = '<table id = "id_tabel" align = "center">
            <tr>
               <th>Employee Category</th>
               <th>FirstName</th>
               <th>LastName</th>
               <th>ContactNo</th>
               <th>Email</th>
            </tr>';
            var arr_employees = xml_dom.getElementsByTagName("Employee");
         // traverses the "arr_employees" array
            for(var i = 0; i<arr_employees.length; i++) {
               var employee_cat = arr_employees[i].getAttribute('category');
   
               // gets the value of 'category' element of current "Element" tag

               // gets the value of first child-node of 'FirstName' 
               // element of current "Employee" tag
                  var employee_firstName =
                     arr_employees[i].getElementsByTagName('FirstName')[0].childNodes[0].nodeValue;

               // gets the value of first child-node of 'LastName' 
               // element of current "Employee" tag
                  var employee_lastName =
                     arr_employees[i].getElementsByTagName('LastName')[0].childNodes[0].nodeValue;

               // gets the value of first child-node of 'ContactNo' 
               // element of current "Employee" tag
                  var employee_contactno = 
                     arr_employees[i].getElementsByTagName('ContactNo')[0].childNodes[0].nodeValue;

               // gets the value of first child-node of 'Email' 
               // element of current "Employee" tag
                  var employee_email = 
                     arr_employees[i].getElementsByTagName('Email')[0].childNodes[0].nodeValue;

               // adds the values in the html table
               html_tab += '<tr>
                  <td>'+ employee_cat+ '</td>
                  <td>'+ employee_firstName+ '</td>
                  <td>'+ employee_lastName+ '</td>
                  <td>'+ employee_contactno+ '</td>
                  <td>'+ employee_email+ '</td>
               </tr>';
            }
         html_tab += '</table>'; 
         // adds the html table in a html tag, with id = "ajax_xml"
         document.getElementById('ajax_xml').innerHTML = html_tab; 
      </script>
   </body>
</html>
  • Dieser Code lädt node.xml .

  • Der XML-Inhalt wird in ein JavaScript-XML-DOM-Objekt umgewandelt.

  • Das Array von Elementen (mit dem Tag Element) unter Verwendung der Methode getElementsByTagName () wird erhalten.

  • Als Nächstes durchlaufen wir dieses Array und zeigen die untergeordneten Knotenwerte in einer Tabelle an.

Ausführung

Speichern Sie diese Datei als traverse_example.html im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Sie erhalten folgende Ausgabe:

Bisher haben wir die DOM-Struktur untersucht, wie man XML-DOM-Objekte lädt und analysiert und die DOM-Objekte durchläuft. Hier sehen wir, wie wir zwischen Knoten in einem DOM-Objekt navigieren können. Das XML-DOM besteht aus verschiedenen Eigenschaften der Knoten, die uns beim Navigieren durch die Knoten helfen, z.

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Es folgt ein Diagramm eines Knotenbaums, das seine Beziehung zu den anderen Knoten zeigt.

DOM - Elternknoten

Diese Eigenschaft gibt den übergeordneten Knoten als Knotenobjekt an.

Beispiel

Im folgenden Beispiel ( navig_example.htm ) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert . Anschließend wird das DOM-Objekt über den untergeordneten Knoten zum übergeordneten Knoten navigiert.

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         var y = xmlDoc.getElementsByTagName("Employee")[0];
         document.write(y.parentNode.nodeName);
      </script>
   </body>
</html>

Wie Sie im obigen Beispiel sehen können, navigiert der untergeordnete Knoten Mitarbeiter zu seinem übergeordneten Knoten.

Ausführung

Speichern Sie diese Datei als Navigationsbeispiel.html im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den übergeordneten Knoten von Employee , dh Company .

Erstes Kind

Diese Eigenschaft ist vom Typ Node und repräsentiert den ersten untergeordneten Namen, der in der NodeList vorhanden ist.

Beispiel

Im folgenden Beispiel (first_node_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und anschließend zum ersten untergeordneten Knoten navigiert, der im DOM-Objekt vorhanden ist.

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         function get_firstChild(p) {
            a = p.firstChild;

            while (a.nodeType != 1) {
               a = a.nextSibling;
            }
            return a;
         }
         var firstchild = get_firstChild(xmlDoc.getElementsByTagName("Employee")[0]);
         document.write(firstchild.nodeName);
      </script>
   </body>
</html>
  • Die Funktion get_firstChild (p) wird verwendet, um leere Knoten zu vermeiden. Es ist hilfreich, das firstChild-Element aus der Knotenliste abzurufen.

  • x = get_firstChild(xmlDoc.getElementsByTagName("Employee")[0])Ruft den ersten untergeordneten Knoten für den Tag-Namen Employee ab .

Ausführung

Speichern Sie diese Datei als first_node_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den ersten untergeordneten Knoten von Employee, dh FirstName .

Letztes Kind

Diese Eigenschaft ist vom Typ Node und repräsentiert den letzten untergeordneten Namen, der in der NodeList vorhanden ist.

Beispiel

Im folgenden Beispiel (last_node_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und anschließend zum letzten untergeordneten Knoten navigiert, der im XML-DOM-Objekt vorhanden ist.

<!DOCTYPE html>
  <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         function get_lastChild(p) {
            a = p.lastChild;

            while (a.nodeType != 1){
               a = a.previousSibling;
            }
            return a;
         }
         var lastchild = get_lastChild(xmlDoc.getElementsByTagName("Employee")[0]);
         document.write(lastchild.nodeName);
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als last_node_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den letzten untergeordneten Knoten des Mitarbeiters, dh E-Mail .

Nächstes Geschwister

Diese Eigenschaft ist vom Typ Node und repräsentiert das nächste untergeordnete Element, dh das nächste Geschwister des angegebenen untergeordneten Elements, das in der NodeList vorhanden ist.

Beispiel

Im folgenden Beispiel (nextSibling_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert, das sofort zum nächsten im XML-Dokument vorhandenen Knoten navigiert.

<!DOCTYPE html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         }
         else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         function get_nextSibling(p) {
            a = p.nextSibling;

            while (a.nodeType != 1) {
               a = a.nextSibling;
            }
            return a;
         }
         var nextsibling = get_nextSibling(xmlDoc.getElementsByTagName("FirstName")[0]);
         document.write(nextsibling.nodeName);
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als nextSibling_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den nächsten Geschwisterknoten von FirstName, dh LastName .

Vorheriges Geschwister

Diese Eigenschaft ist vom Typ Node und repräsentiert das vorherige untergeordnete Element, dh das vorherige Geschwister des angegebenen untergeordneten Elements, das in der NodeList vorhanden ist.

Beispiel

Das folgende Beispiel (previoussibling_example.htm) analysiert ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt und navigiert dann zum Vorgängerknoten des letzten im XML-Dokument vorhandenen untergeordneten Knotens.

<!DOCTYPE html>
   <body>
      <script>
         if (window.XMLHttpRequest)
         {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         function get_previousSibling(p) {
            a = p.previousSibling;

            while (a.nodeType != 1) {
               a = a.previousSibling;
            }
            return a;
         }

         prevsibling = get_previousSibling(xmlDoc.getElementsByTagName("Email")[0]);
         document.write(prevsibling.nodeName);
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als previoussibling_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den vorherigen Geschwisterknoten von Email, dh ContactNo .

In diesem Kapitel werden wir untersuchen, wie auf die XML-DOM-Knoten zugegriffen wird, die als Informationseinheiten des XML-Dokuments betrachtet werden. Die Knotenstruktur des XML-DOM ermöglicht es dem Entwickler, im Baum nach bestimmten Informationen zu navigieren und gleichzeitig auf die Informationen zuzugreifen.

Zugriff auf Knoten

Im Folgenden sind die drei Möglichkeiten aufgeführt, wie Sie auf die Knoten zugreifen können:

  • Mit dem getElementsByTagName () Methode

  • Durch Durchlaufen oder Durchlaufen des Knotenbaums

  • Durch Navigieren im Knotenbaum unter Verwendung der Knotenbeziehungen

getElementsByTagName ()

Diese Methode ermöglicht den Zugriff auf die Informationen eines Knotens durch Angabe des Knotennamens. Es ermöglicht auch den Zugriff auf die Informationen der Knotenliste und der Knotenlistenlänge.

Syntax

Die Methode getElementByTagName () hat die folgende Syntax:

node.getElementByTagName("tagname");

Wo,

  • Knoten - ist der Dokumentknoten.

  • Tagname - Enthält den Namen des Knotens, dessen Wert Sie abrufen möchten.

Beispiel

Das folgende einfache Programm veranschaulicht die Verwendung der Methode getElementByTagName.

<!DOCTYPE html>
<html>
   <body>
      <div>
         <b>FirstName:</b> <span id = "FirstName"></span><br>
         <b>LastName:</b> <span id = "LastName"></span><br>
         <b>Category:</b> <span id = "Employee"></span><br>
      </div>
      <script>
         if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
         } else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         document.getElementById("FirstName").innerHTML = 
         xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0].nodeValue;
         document.getElementById("LastName").innerHTML = 
         xmlDoc.getElementsByTagName("LastName")[0].childNodes[0].nodeValue;
         document.getElementById("Employee").innerHTML = 
         xmlDoc.getElementsByTagName("Employee")[0].attributes[0].nodeValue;
      </script>
   </body>
</html>
  • Im obigen Beispiel greifen wir auf die Informationen der Knoten Vorname , Nachname und Mitarbeiter zu .

  • xmlDoc.getElementsByTagName ("Vorname") [0] .childNodes [0] .nodeValue; Diese Zeile greift mit der Methode getElementByTagName () auf den Wert für den untergeordneten Knoten FirstName zu .

  • xmlDoc.getElementsByTagName ("Employee") [0] .attributes [0] .nodeValue; Diese Zeile greift auf den Attributwert der Methode Employee getElementByTagName () des Knotens zu .

Durch Knoten gehen

Dies wird im Kapitel DOM-Traversing mit Beispielen behandelt.

Durch Knoten navigieren

Dies wird im Kapitel DOM-Navigation mit Beispielen behandelt.

In diesem Kapitel wird untersucht, wie der Knotenwert eines XML-DOM-Objekts ermittelt wird. XML-Dokumente haben eine Hierarchie von Informationseinheiten, die als Knoten bezeichnet werden. Das Knotenobjekt hat eine Eigenschaft nodeValue , die den Wert des Elements zurückgibt.

In den folgenden Abschnitten werden wir diskutieren -

  • Abrufen des Knotenwerts eines Elements

  • Attributwert eines Knotens abrufen

Die in allen folgenden Beispielen verwendete node.xml lautet wie folgt:

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

Knotenwert abrufen

Die Methode getElementsByTagName () gibt eine NodeList aller Elemente in Dokumentreihenfolge mit einem bestimmten Tag-Namen zurück.

Beispiel

Im folgenden Beispiel (getnode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der Knotenwert des untergeordneten Knotens Vorname (Index bei 0) extrahiert.

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         x = xmlDoc.getElementsByTagName('FirstName')[0]
         y = x.childNodes[0];
         document.write(y.nodeValue);
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als getnode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den Knotenwert als Tanmay .

Attributwert abrufen

Attribute sind Teil der XML-Knotenelemente. Ein Knotenelement kann mehrere eindeutige Attribute haben. Das Attribut enthält weitere Informationen zu XML-Knotenelementen. Genauer gesagt definieren sie Eigenschaften der Knotenelemente. Ein XML-Attribut ist immer ein Name-Wert-Paar. Dieser Wert des Attributs wird als Attributknoten bezeichnet .

Die Methode getAttribute () ruft einen Attributwert anhand des Elementnamens ab.

Beispiel

Im folgenden Beispiel (get_attribute_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der Attributwert der Kategorie Employee (Index bei 2) extrahiert.

<!DOCTYPE html>
<html>
   <body>
      <script>
         if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
         } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","/dom/node.xml",false);
         xmlhttp.send();
         xmlDoc = xmlhttp.responseXML;

         x = xmlDoc.getElementsByTagName('Employee')[2];
         document.write(x.getAttribute('category'));
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als get_attribute_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den Attributwert als Management .

In diesem Kapitel erfahren Sie, wie Sie die Werte von Knoten in einem XML-DOM-Objekt ändern. Der Knotenwert kann wie folgt geändert werden:

var value = node.nodeValue;

Wenn der Knoten ein Attribut ist, ist die Wertvariable der Wert des Attributs. Wenn der Knoten ein Textknoten ist , ist dies der Textinhalt. Wenn der Knoten ein Element ist, ist er null .

In den folgenden Abschnitten wird die Einstellung des Knotenwerts für jeden Knotentyp (Attribut, Textknoten und Element) veranschaulicht.

Die in allen folgenden Beispielen verwendete node.xml lautet wie folgt:

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

Ändern Sie den Wert des Textknotens

Wenn wir den Änderungswert des Knotenelements sagen, meinen wir, den Textinhalt eines Elements (das auch als Textknoten bezeichnet wird ) zu bearbeiten . Das folgende Beispiel zeigt, wie Sie den Textknoten eines Elements ändern.

Beispiel

Im folgenden Beispiel (set_text_node_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der Wert des Textknotens eines Elements geändert. In diesem Fall senden Sie eine E-Mail jedes Mitarbeiters an [email protected] und drucken Sie die Werte aus.

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

Ausführung

Speichern Sie diese Datei als set_text_node_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). Sie erhalten folgende Ausgabe:

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

Ändern Sie den Wert des Attributknotens

Das folgende Beispiel zeigt, wie Sie den Attributknoten eines Elements ändern.

Beispiel

Im folgenden Beispiel (set_attribute_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der Wert des Attributknotens eines Elements geändert. In diesem Fall wird die Kategorie der einzelnen Mitarbeiter zu Admin-0, admin-1, admin-2 jeweils und die Werte drucken.

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

Ausführung

Speichern Sie diese Datei als set_node_attribute_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). Das Ergebnis wäre wie folgt:

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

In diesem Kapitel wird erläutert, wie Sie mit einigen Methoden des Dokumentobjekts neue Knoten erstellen. Diese Methoden bieten einen Bereich zum Erstellen eines neuen Elementknotens, Textknotens, Kommentarknotens, CDATA-Abschnittsknotens und Attributknotens . Wenn der neu erstellte Knoten bereits im Elementobjekt vorhanden ist, wird er durch den neuen ersetzt. Die folgenden Abschnitte veranschaulichen dies anhand von Beispielen.

Erstellen Sie neue Element - Knoten

Die Methode createElement () erstellt einen neuen Elementknoten. Wenn der neu erstellte Elementknoten im Elementobjekt vorhanden ist, wird er durch den neuen ersetzt.

Syntax

Die Syntax zur Verwendung der Methode createElement () lautet wie folgt:

var_name = xmldoc.createElement("tagname");

Wo,

  • var_name - ist der benutzerdefinierte Variablenname, der den Namen des neuen Elements enthält.

  • ("Tagname") - ist der Name des neuen Elementknotens, der erstellt werden soll.

Beispiel

Im folgenden Beispiel (createnewelement_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und ein neuer Elementknoten PhoneNo im XML-Dokument erstellt.

<!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"); Erstellt den neuen Elementknoten <PhoneNo>

  • x.appendChild (new_element); x enthält den Namen des angegebenen untergeordneten Knotens <ErsterName>, an den der neue Elementknoten angehängt wird.

Ausführung

Speichern Sie diese Datei als createnewelement_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den Attributwert als PhoneNo .

Erstellen neuer Textknoten

Die Methode createTextNode () erstellt einen neuen Textknoten .

Syntax

Die Syntax zur Verwendung von createTextNode () lautet wie folgt:

var_name = xmldoc.createTextNode("tagname");

Wo,

  • var_name - Dies ist der benutzerdefinierte Variablenname, der den Namen des neuen Textknotens enthält .

  • ("Tagname") - In der Klammer steht der Name des neuen zu erstellenden Textknotens .

Beispiel

Im folgenden Beispiel (createtextnode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und ein neuer Textknoten erstellt. Im neuen Textknoten im XML-Dokument.

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

Details des obigen Codes sind wie folgt -

  • create_e = xmlDoc.createElement ("PhoneNo"); erstellt ein neues Element < Telefonnummer >.

  • create_t = xmlDoc.createTextNode ("Im neuen Textknoten"); erstellt einen neuen Textknoten "Im neuen Textknoten" .

  • x.appendChild (create_e); Der Textknoten "Im neuen Textknoten " wird an das Element < Telefonnummer > angehängt .

  • document.write (x.getElementsByTagName ("PhoneNo") [0] .childNodes [0] .nodeValue); schreibt den neuen Textknotenwert in das Element <PhoneNo>.

Ausführung

Speichern Sie diese Datei als createtextnode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den Attributwert als PhoneNO: Im neuen Textknoten .

Erstellen neuer Kommentar Knoten

Die Methode createComment () erstellt einen neuen Kommentarknoten. Der Kommentarknoten ist im Programm enthalten, um das Verständnis der Codefunktionalität zu erleichtern.

Syntax

Die Syntax zur Verwendung von createComment () lautet wie folgt:

var_name = xmldoc.createComment("tagname");

Wo,

  • var_name - ist der benutzerdefinierte Variablenname, der den Namen des neuen Kommentarknotens enthält.

  • ("Tagname") - ist der Name des neu zu erstellenden Kommentarknotens.

Beispiel

Im folgenden Beispiel (createcommentnode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und ein neuer Kommentarknoten "Firma ist der übergeordnete Knoten" im XML-Dokument erstellt.

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

Im obigen Beispiel -

  • create_comment = xmlDoc.createComment ("Firma ist der übergeordnete Knoten") creates a specified comment line.

  • x.appendChild (create_comment) In dieser Zeile enthält 'x' den Namen des Elements <Unternehmen>, an das die Kommentarzeile angehängt wird.

Ausführung

Speichern Sie diese Datei als createcommentnode_example.htm im Serverpfad (diese Datei und die Datei node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). In der Ausgabe erhalten wir den Attributwert, da Company der übergeordnete Knoten ist .

Erstellen neuer CDATA Abschnitt Knoten

Die Methode createCDATASection () erstellt einen neuen CDATA-Abschnittsknoten. Wenn der neu erstellte CDATA-Abschnittsknoten im Elementobjekt vorhanden ist, wird er durch den neuen ersetzt.

Syntax

Die Syntax zur Verwendung von createCDATASection () lautet wie folgt:

var_name = xmldoc.createCDATASection("tagname");

Wo,

  • var_name - ist der benutzerdefinierte Variablenname, der den Namen des neuen CDATA-Abschnittsknotens enthält.

  • ("Tagname") - ist der Name des neuen CDATA-Abschnittsknotens, der erstellt werden soll.

Beispiel

Im folgenden Beispiel (createcdatanode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und ein neuer CDATA-Abschnittsknoten "CDATA-Beispiel erstellen" im XML-Dokument erstellt.

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

Im obigen Beispiel -

  • create_CDATA = xmlDoc.createCDATASection ("CDATA-Beispiel erstellen") erstellt einen neuen CDATA-Abschnittsknoten, "CDATA-Beispiel erstellen".

  • x.appendChild (create_CDATA) hier enthält x das angegebene Element <Employee>, das auf 0 indiziert ist und an das der CDATA-Knotenwert angehängt wird.

Ausführung

Speichern Sie diese Datei als createcdatanode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). In der Ausgabe erhalten wir den Attributwert als CDATA-Beispiel erstellen .

Erstellen neuer Attributknoten

Um einen neuen Attributknoten zu erstellen, wird die Methode setAttributeNode () verwendet. Wenn der neu erstellte Attributknoten im Elementobjekt vorhanden ist, wird er durch den neuen ersetzt.

Syntax

Die Syntax zur Verwendung der Methode createElement () lautet wie folgt:

var_name = xmldoc.createAttribute("tagname");

Wo,

  • var_name - ist der benutzerdefinierte Variablenname, der den Namen des neuen Attributknotens enthält.

  • ("Tagname") - ist der Name des neuen Attributknotens, der erstellt werden soll.

Beispiel

Der folgende Beispiel (createattributenode_example.htm) parst ein XML - Dokument ( node.xml ) in ein XML - DOM - Objekt und erzeugt einen neuen Attributknoten Abschnitt in dem XML - Dokument.

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

Im obigen Beispiel -

  • create_a = xmlDoc.createAttribute ("Kategorie") erstellt ein Attribut mit dem Namen <Abschnitt>.

  • create_a.nodeValue = "Management" erstellt den Wert "A" für das Attribut <Abschnitt>.

  • x [0] .setAttributeNode (create_a) Dieser Attributwert wird auf das bei 0 indizierte Knotenelement <Mitarbeiter> gesetzt.

In diesem Kapitel werden die Knoten des vorhandenen Elements erläutert. Es bietet ein Mittel, um -

  • neue untergeordnete Knoten vor oder nach den vorhandenen untergeordneten Knoten anhängen

  • Daten in den Textknoten einfügen

  • Attributknoten hinzufügen

Die folgenden Methoden können verwendet werden, um die Knoten zu einem Element in einem DOM hinzuzufügen / anzuhängen:

  • appendChild()
  • insertBefore()
  • insertData()

appendChild ()

Die Methode appendChild () fügt den neuen untergeordneten Knoten nach dem vorhandenen untergeordneten Knoten hinzu.

Syntax

Die Syntax der appendChild () -Methode lautet wie folgt:

Node appendChild(Node newChild) throws DOMException

Wo,

  • newChild - Ist der hinzuzufügende Knoten

  • Diese Methode gibt den hinzugefügten Knoten zurück .

Beispiel

Im folgenden Beispiel (appendchildnode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und das neue untergeordnete PhoneNo an das Element <FirstName> angehängt.

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

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

         document.write(x.getElementsByTagName("PhoneNo")[0].nodeName);
      </script>
   </body>
</html>

Im obigen Beispiel -

  • Mit der Methode createElement () wird ein neues Element PhoneNo erstellt.

  • Das neue Element PHONENO wird zu dem Elemente First der Methode appendChild () verwendet.

Ausführung

Speichern Sie diese Datei als appendchildnode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir den Attributwert als PhoneNo .

insertBefore ()

Die Methode insertBefore () fügt die neuen untergeordneten Knoten vor den angegebenen untergeordneten Knoten ein.

Syntax

Die Syntax der Methode insertBefore () lautet wie folgt:

Node insertBefore(Node newChild, Node refChild) throws DOMException

Wo,

  • newChild - Ist der einzufügende Knoten

  • refChild - Ist der Referenzknoten, dh der Knoten, vor dem der neue Knoten eingefügt werden muss.

  • Diese Methode gibt den einzufügenden Knoten zurück .

Beispiel

Im folgenden Beispiel (insertnodebefore_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und eine neue untergeordnete E-Mail vor dem angegebenen Element <Email> eingefügt .

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

         x = xmlDoc.documentElement;
         y = xmlDoc.getElementsByTagName("Email");

         document.write("No of Email elements before inserting was: " + y.length);
         document.write("<br>");
         x.insertBefore(create_e,y[3]);

         y=xmlDoc.getElementsByTagName("Email");
         document.write("No of Email elements after inserting is: " + y.length);
      </script>
   </body>
</html>

Im obigen Beispiel -

  • Mit der Methode createElement () wird ein neues Element Email erstellt.

  • Das neue Element Email wird vor dem Element Email mit der Methode insertBefore () hinzugefügt .

  • y.length gibt die Gesamtzahl der Elemente an, die vor und nach dem neuen Element hinzugefügt wurden.

Ausführung

Speichern Sie diese Datei als insertnodebefore_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). Wir erhalten folgende Ausgabe:

No of Email elements before inserting was: 3
No of Email elements after inserting is: 4

insertData ()

Die Methode insertData () fügt eine Zeichenfolge mit dem angegebenen 16-Bit-Einheitenoffset ein.

Syntax

Die insertData () hat die folgende Syntax:

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

Wo,

  • offset - ist der Zeichenversatz, bei dem eingefügt werden soll.

  • arg - ist das Schlüsselwort zum Einfügen der Daten. Es schließt die beiden Parameter Offset und String in die durch Komma getrennte Klammer ein.

Beispiel

Im folgenden Beispiel (addtext_example.htm) wird ein XML-Dokument (" node.xml ") in ein XML-DOM-Objekt analysiert und neue Daten MiddleName an der angegebenen Position in das Element <FirstName> eingefügt.

<!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].childNodes[0];
        document.write(x.nodeValue);
        x.insertData(6,"MiddleName");
        document.write("<br>");
        document.write(x.nodeValue);

     </script>
   </body>
</html>
  • x.insertData(6,"MiddleName");- Hier enthält x den Namen des angegebenen untergeordneten Namens, dh <FirstName>. Wir fügen dann in diesen Textknoten die Daten "MiddleName" ab Position 6 ein.

Ausführung

Speichern Sie diese Datei als addtext_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). In der Ausgabe erhalten wir Folgendes:

Tanmay
TanmayMiddleName

In diesem Kapitel werden wir uns mit der Operation zum Ersetzen von Knoten in einem XML-DOM-Objekt befassen. Wie wir wissen, wird alles im DOM in einer hierarchischen Informationseinheit verwaltet, die als Knoten bekannt ist, und der ersetzende Knoten bietet eine andere Möglichkeit, diese angegebenen Knoten oder einen Textknoten zu aktualisieren.

Im Folgenden sind die beiden Methoden zum Ersetzen der Knoten aufgeführt.

  • replaceChild()
  • replaceData()

replaceChild ()

Die Methode replaceChild () ersetzt den angegebenen Knoten durch den neuen Knoten.

Syntax

Die insertData () hat die folgende Syntax:

Node replaceChild(Node newChild, Node oldChild) throws DOMException

Wo,

  • newChild - ist der neue Knoten, der in die untergeordnete Liste aufgenommen werden soll.

  • oldChild - ist der Knoten, der in der Liste ersetzt wird.

  • Diese Methode gibt den ersetzten Knoten zurück.

Beispiel

Im folgenden Beispiel (replaceenode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der angegebene Knoten <FirstName> durch den neuen Knoten <Name> ersetzt.

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

Ausführung

Speichern Sie diese Datei als replaceenode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten die Ausgabe wie unten gezeigt -

Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha

Content of FirstName element after replace operation
Taniya
Tanisha

replaceData ()

Die Methode replaceData () ersetzt die Zeichen ab dem angegebenen 16-Bit-Einheitenoffset durch die angegebene Zeichenfolge.

Syntax

Die replaceData () hat die folgende Syntax:

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

Wo

  • Offset - ist der Offset, ab dem das Ersetzen beginnen soll.

  • count - ist die Anzahl der zu ersetzenden 16-Bit-Einheiten. Wenn die Summe aus Offset und Anzahl die Länge überschreitet, werden alle 16-Bit-Einheiten bis zum Ende der Daten ersetzt.

  • arg - der DOMString, durch den der Bereich ersetzt werden muss.

Beispiel

Im folgenden Beispiel ( replaceata_example.htm ) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und ersetzt.

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

Im obigen Beispiel -

  • x.replaceData (2,3, "999"); - Hier enthält x den Text des angegebenen Elements <ContactNo>, dessen Text durch den neuen Text "9999999" ersetzt wird , beginnend von Position 1 bis zur Länge von 5 .

Ausführung

Speichern Sie diese Datei als replacedata_example.htm auf dem Serverpfad (diese Datei und node.xml sollten in Ihrem Server auf dem gleichen Weg sein). Wir erhalten die Ausgabe wie unten gezeigt -

ContactNo before replace operation: 1234567890

ContactNo after replace operation: 199999997890

In diesem Kapitel werden wir uns mit der Operation XML DOM Remove Node befassen . Die Operation "Knoten entfernen" entfernt den angegebenen Knoten aus dem Dokument. Diese Operation kann implementiert werden, um Knoten wie Textknoten, Elementknoten oder einen Attributknoten zu entfernen.

Im Folgenden sind die Methoden aufgeführt, die zum Entfernen der Knotenoperation verwendet werden:

  • removeChild()

  • removeAttribute()

removeChild ()

Die Methode removeChild () entfernt den von oldChild angegebenen untergeordneten Knoten aus der Liste der untergeordneten Knoten und gibt ihn zurück. Das Entfernen eines untergeordneten Knotens entspricht dem Entfernen eines Textknotens. Durch Entfernen eines untergeordneten Knotens wird daher der ihm zugeordnete Textknoten entfernt.

Syntax

Die Syntax zur Verwendung von removeChild () lautet wie folgt:

Node removeChild(Node oldChild) throws DOMException

Wo,

  • oldChild - ist der Knoten, der entfernt wird.

  • Diese Methode gibt den entfernten Knoten zurück.

Beispiel - Aktuellen Knoten entfernen

Im folgenden Beispiel (removecurrentnode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der angegebene Knoten <ContactNo> vom übergeordneten Knoten entfernt.

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

Im obigen Beispiel -

  • x = xmlDoc.getElementsByTagName ("ContactNo") [0] ruft das bei 0 indizierte Element <ContactNo> ab.

  • x.parentNode.removeChild (x); Entfernt das bei 0 indizierte Element <ContactNo> vom übergeordneten Knoten.

Ausführung

Speichern Sie diese Datei als removecurrentnode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). Wir erhalten das folgende Ergebnis -

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

Beispiel - Textknoten entfernen

Im folgenden Beispiel (removeetextNode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der angegebene untergeordnete Knoten <FirstName> entfernt.

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

Im obigen Beispiel -

  • x = xmlDoc.getElementsByTagName ("Vorname") [0]; - Ruft das erste Element <FirstName> an das bei 0 indizierte x ab .

  • y = x.childNodes [0]; - In dieser Zeile enthält y den zu entfernenden untergeordneten Knoten.

  • x.removeChild (y); - Entfernt den angegebenen untergeordneten Knoten.

Ausführung

Speichern Sie diese Datei als removeetextNode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten das folgende Ergebnis -

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

removeAttribute ()

Die Methode removeAttribute () entfernt ein Attribut eines Elements nach Namen.

Syntax

Die Syntax zur Verwendung von removeAttribute () lautet wie folgt:

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

Wo,

  • name - ist der Name des zu entfernenden Attributs.

Beispiel

Im folgenden Beispiel (removeelementattribute_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und der angegebene Attributknoten entfernt.

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

Im obigen Beispiel -

  • document.write (x [1] .getAttribute ('category')); - Wert des Attributs Kategorie in der 1. Position indexiert wird aufgerufen.

  • x [1] .removeAttribute ('Kategorie'); - Entfernt den Attributwert.

Ausführung

Speichern Sie diese Datei als removeelementattribute_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten das folgende Ergebnis -

Non-Technical
null

In diesem Kapitel werden wir die discucss Clonen Knoten Operation auf XML DOM - Objekt. Die Klonknotenoperation wird verwendet, um eine doppelte Kopie des angegebenen Knotens zu erstellen. Für diesen Vorgang wird cloneNode () verwendet.

cloneNode ()

Diese Methode gibt ein Duplikat dieses Knotens zurück, dh es dient als generischer Kopierkonstruktor für Knoten. Der doppelte Knoten hat kein übergeordnetes Element (parentNode ist null) und keine Benutzerdaten.

Syntax

Die cloneNode () -Methode hat die folgende Syntax:

Node cloneNode(boolean deep)
  • deep - Wenn true, wird der Teilbaum unter dem angegebenen Knoten rekursiv geklont. Wenn false, klonen Sie nur den Knoten selbst (und seine Attribute, wenn es sich um ein Element handelt).

  • Diese Methode gibt den doppelten Knoten zurück.

Beispiel

Im folgenden Beispiel (clonenode_example.htm) wird ein XML-Dokument ( node.xml ) in ein XML-DOM-Objekt analysiert und eine tiefe Kopie des ersten Employee- Elements erstellt.

<!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')[0];
         clone_node = x.cloneNode(true);
         xmlDoc.documentElement.appendChild(clone_node);

         firstname = xmlDoc.getElementsByTagName("FirstName");
         lastname = xmlDoc.getElementsByTagName("LastName");
	 contact = xmlDoc.getElementsByTagName("ContactNo");
	 email = xmlDoc.getElementsByTagName("Email");
         for (i = 0;i < firstname.length;i++) {
            document.write(firstname[i].childNodes[0].nodeValue+'  
               '+lastname[i].childNodes[0].nodeValue+',  
               '+contact[i].childNodes[0].nodeValue+',  '+email[i].childNodes[0].nodeValue);
            document.write("<br>");
         }
      </script>
   </body>
</html>

Wie Sie im obigen Beispiel sehen können, haben wir den Parameter cloneNode () auf true gesetzt . Daher wird jedes untergeordnete Element unter dem Employee- Element kopiert oder geklont.

Ausführung

Speichern Sie diese Datei als clonenode_example.htm im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten die Ausgabe wie unten gezeigt -

Tanmay Patil, 1234567890, [email protected]
Taniya Mishra, 1234667898, [email protected]
Tanisha Sharma, 1234562350, [email protected]
Tanmay Patil, 1234567890, [email protected]

Sie werden feststellen, dass das erste Employee- Element vollständig geklont ist.

Die Knotenschnittstelle ist der primäre Datentyp für das gesamte Dokumentobjektmodell. Der Knoten wird verwendet, um ein einzelnes XML-Element im gesamten Dokumentbaum darzustellen.

Ein Knoten kann ein beliebiger Typ sein, der ein Attributknoten, ein Textknoten oder ein anderer Knoten ist. Die Attribute nodeName, nodeValue und Attribute sind als Mechanismus enthalten, um auf Knoteninformationen zuzugreifen, ohne auf die spezifische abgeleitete Schnittstelle zurückzugreifen.

Attribute

In der folgenden Tabelle sind die Attribute des Node- Objekts aufgeführt.

Attribut Art Beschreibung
Attribute NamedNodeMap Dies ist vom Typ NamedNodeMap , der die Attribute dieses Knotens enthält (wenn es sich um ein Element handelt) oder andernfalls null. Dies wurde entfernt. Siehe Spezifikationen
baseURI DOMString Es wird verwendet, um den absoluten Basis-URI des Knotens anzugeben.
childNodes NodeList Es ist eine NodeList , die alle untergeordneten Elemente dieses Knotens enthält. Wenn keine untergeordneten Elemente vorhanden sind, ist dies eine Knotenliste, die keine Knoten enthält.
erstes Kind Knoten Es gibt das erste untergeordnete Element eines Knotens an.
letztes Kind Knoten Es gibt das letzte untergeordnete Element eines Knotens an.
Lokaler Name DOMString Es wird verwendet, um den Namen des lokalen Teils eines Knotens anzugeben. Dies wurde entfernt. Siehe Spezifikationen .
NamespaceURI DOMString Es gibt den Namespace-URI eines Knotens an. Dies wurde entfernt. Siehe Spezifikationen
nextSibling Knoten Es gibt den Knoten zurück, der diesem Knoten unmittelbar folgt. Wenn es keinen solchen Knoten gibt, gibt dies null zurück.
Knotenname DOMString Der Name dieses Knotens hängt von seinem Typ ab.
nodeType unsigned short Es ist ein Code, der den Typ des zugrunde liegenden Objekts darstellt.
nodeValue DOMString Es wird verwendet, um den Wert eines Knotens abhängig von seinem Typ anzugeben.
ownerDocument Dokument Es gibt das dem Knoten zugeordnete Dokumentobjekt an.
Elternknoten Knoten Diese Eigenschaft gibt den übergeordneten Knoten eines Knotens an.
Präfix DOMString Diese Eigenschaft gibt das Namespace-Präfix eines Knotens zurück. Dies wurde entfernt. Siehe Spezifikationen
vorherige Geschwister Knoten Dies gibt den Knoten unmittelbar vor dem aktuellen Knoten an.
Textinhalt DOMString Dies gibt den Textinhalt eines Knotens an.

Knotentypen

Wir haben die Knotentypen wie folgt aufgelistet -

  • ELEMENT_NODE
  • ATTRIBUTE_NODE
  • ENTITY_NODE
  • ENTITY_REFERENCE_NODE
  • DOCUMENT_FRAGMENT_NODE
  • TEXT_NODE
  • CDATA_SECTION_NODE
  • COMMENT_NODE
  • PROCESSING_INSTRUCTION_NODE
  • DOCUMENT_NODE
  • DOCUMENT_TYPE_NODE
  • NOTATION_NODE

Methoden

In der folgenden Tabelle sind die verschiedenen Knotenobjektmethoden aufgeführt.

S.No. Methode & Beschreibung
1 appendChild (Node newChild)

Diese Methode fügt einen Knoten nach dem letzten untergeordneten Knoten des angegebenen Elementknotens hinzu. Es gibt den hinzugefügten Knoten zurück.

2 cloneNode (boolean deep)

Diese Methode wird verwendet, um einen doppelten Knoten zu erstellen, wenn dieser in einer abgeleiteten Klasse überschrieben wird. Es gibt den duplizierten Knoten zurück.

3 compareDocumentPosition (Node other)

Diese Methode wird verwendet, um die Position des aktuellen Knotens mit einem angegebenen Knoten gemäß der Dokumentreihenfolge zu vergleichen. Gibt einen vorzeichenlosen Kurzschluss zurück , wie der Knoten relativ zum Referenzknoten positioniert ist.

4

getFeature(DOMString feature, DOMString version)

Gibt das DOM-Objekt zurück, das die speziellen APIs der angegebenen Funktion und Version implementiert, falls vorhanden, oder null, wenn kein Objekt vorhanden ist. Dies wurde entfernt. Siehe Spezifikationen .

5

getUserData(DOMString key)

Ruft das einem Schlüssel auf diesem Knoten zugeordnete Objekt ab. Das Objekt muss zuerst auf diesen Knoten gesetzt worden sein, indem setUserData mit demselben Schlüssel aufgerufen wurde. Gibt die DOMUserData zurück, die dem angegebenen Schlüssel auf diesem Knoten zugeordnet sind, oder null, wenn keine vorhanden waren. Dies wurde entfernt. Siehe Spezifikationen .

6

hasAttributes()

Gibt zurück, ob dieser Knoten (wenn es sich um ein Element handelt) Attribute hat oder nicht. Gibt true zurück, wenn ein Attribut im angegebenen Knoten vorhanden ist. Andernfalls wird false zurückgegeben . Dies wurde entfernt. Siehe Spezifikationen .

7 hasChildNodes ()

Gibt zurück, ob dieser Knoten untergeordnete Knoten hat. Diese Methode gibt true zurück , wenn der aktuelle Knoten untergeordnete Knoten hat, andernfalls false .

8 insertBefore (Knoten newChild, Knoten refChild)

Diese Methode wird verwendet, um einen neuen Knoten als untergeordnetes Element dieses Knotens direkt vor einem vorhandenen untergeordneten Knoten dieses Knotens einzufügen. Es gibt den Knoten zurück, der eingefügt wird.

9 isDefaultNamespace (DOMString-NamespaceURI)

Diese Methode akzeptiert einen Namespace-URI als Argument und gibt einen Booleschen Wert mit dem Wert true zurück, wenn der Namespace der Standard-Namespace auf dem angegebenen Knoten ist, oder false, wenn nicht.

10 isEqualNode (Node arg)

Diese Methode testet, ob zwei Knoten gleich sind. Gibt true zurück, wenn die Knoten gleich sind, andernfalls false .

11

isSameNode(Node other)

Diese Methode gibt zurück, ob der aktuelle Knoten derselbe wie der angegebene ist. Gibt true zurück, wenn die Knoten identisch sind, andernfalls false . Dies wurde entfernt. Siehe Spezifikationen .

12

isSupported(DOMString feature, DOMString version)

Diese Methode gibt zurück, ob das angegebene DOM-Modul vom aktuellen Knoten unterstützt wird. Gibt true zurück, wenn die angegebene Funktion auf diesem Knoten unterstützt wird, andernfalls false . Dies wurde entfernt. Siehe Spezifikationen .

13 lookupNamespaceURI (DOMString-Präfix)

Diese Methode ruft den URI des Namespace ab, der dem Namespace-Präfix zugeordnet ist.

14 lookupPrefix (DOMString-NamespaceURI)

Diese Methode gibt das nächstgelegene Präfix zurück, das im aktuellen Namespace für den Namespace-URI definiert ist. Gibt ein zugeordnetes Namespace-Präfix zurück, wenn es gefunden wurde, oder null, wenn keines gefunden wurde.

15 normalisieren()

Die Normalisierung fügt alle Textknoten hinzu, einschließlich Attributknoten, die eine normale Form definieren, wobei die Struktur der Knoten, die Elemente, Kommentare, Verarbeitungsanweisungen, CDATA-Abschnitte und Entitätsreferenzen enthalten, die Textknoten trennt, dh weder benachbarte Textknoten noch leere Textknoten.

16 removeChild (Node oldChild)

Diese Methode wird verwendet, um einen angegebenen untergeordneten Knoten vom aktuellen Knoten zu entfernen. Dies gibt den entfernten Knoten zurück.

17 replaceChild (Knoten newChild, Knoten oldChild)

Diese Methode wird verwendet, um den alten untergeordneten Knoten durch einen neuen Knoten zu ersetzen. Dies gibt den ersetzten Knoten zurück.

18

setUserData(DOMString key, DOMUserData data, UserDataHandler handler)

Diese Methode ordnet ein Objekt einem Schlüssel auf diesem Knoten zu. Das Objekt kann später von diesem Knoten abgerufen werden, indem getUserData mit demselben Schlüssel aufgerufen wird . Dies gibt die DOMUserData zurück, die zuvor dem angegebenen Schlüssel auf diesem Knoten zugeordnet waren. Dies wurde entfernt. Siehe Spezifikationen .

Das NodeList-Objekt gibt die Abstraktion einer geordneten Sammlung von Knoten an. Auf die Elemente in der NodeList kann über einen integralen Index ab 0 zugegriffen werden.

Attribute

In der folgenden Tabelle sind die Attribute des NodeList-Objekts aufgeführt.

Attribut Art Beschreibung
Länge lange nicht signiert Es gibt die Anzahl der Knoten in der Knotenliste an.

Methoden

Das Folgende ist die einzige Methode des NodeList-Objekts.

S.No. Methode & Beschreibung
1 Artikel()

Es gibt den Index des Elements in der Sammlung zurück. Wenn der Index größer oder gleich der Anzahl der Knoten in der Liste ist, wird null zurückgegeben.

Das NamedNodeMap- Objekt wird verwendet, um Sammlungen von Knoten darzustellen, auf die über den Namen zugegriffen werden kann.

Attribute

In der folgenden Tabelle ist die Eigenschaft des NamedNodeMap-Objekts aufgeführt.

Attribut Art Beschreibung
Länge lange nicht signiert Es gibt die Anzahl der Knoten in dieser Karte an. Der Bereich gültiger untergeordneter Knotenindizes reicht von 0 bis einschließlich Länge 1.

Methoden

In der folgenden Tabelle sind die Methoden des NamedNodeMap- Objekts aufgeführt.

S.No. Methoden & Beschreibung
1 getNamedItem ()

Ruft den durch den Namen angegebenen Knoten ab.

2 getNamedItemNS ()

Ruft einen Knoten ab, der durch den lokalen Namen und den Namespace-URI angegeben ist.

3 item ()

Gibt den Index des Elements in der Karte zurück. Wenn der Index größer oder gleich der Anzahl der Knoten in dieser Zuordnung ist, wird null zurückgegeben.

4 removeNamedItem ()

Entfernt einen durch den Namen angegebenen Knoten.

5 removeNamedItemNS ()

Entfernt einen Knoten, der durch den lokalen Namen und den Namespace-URI angegeben ist.

6 setNamedItem ()

Fügt einen Knoten mit seinem Attribut nodeName hinzu . Wenn ein Knoten mit diesem Namen bereits in dieser Zuordnung vorhanden ist, wird er durch den neuen ersetzt.

7 setNamedItemNS ()

Fügt einen Knoten mit seinem NamespaceURI und localName hinzu . Wenn ein Knoten mit diesem Namespace-URI und diesem lokalen Namen bereits in dieser Zuordnung vorhanden ist, wird er durch den neuen ersetzt. Das Ersetzen eines Knotens selbst hat keine Auswirkung.

Das DOMImplementation- Objekt bietet eine Reihe von Methoden zum Ausführen von Operationen, die von einer bestimmten Instanz des Dokumentobjektmodells unabhängig sind.

Methoden

In der folgenden Tabelle sind die Methoden des DOMImplementation- Objekts aufgeführt.

S.No. Methode & Beschreibung
1 createDocument (NamespaceURI, qualifizierter Name, Doctype)

Es erstellt mit seinem Dokumentelement ein DOM-Dokumentobjekt des angegebenen Typs.

2 createDocumentType (qualifizierter Name, öffentliche ID, System-ID)

Es wird ein leerer DocumentType- Knoten erstellt.

3

getFeature(feature, version)

Diese Methode gibt ein spezialisiertes Objekt zurück, das die spezialisierten APIs des angegebenen Features und der angegebenen Version implementiert. Dies wurde entfernt. Siehe Spezifikationen .

4 hasFeature (Funktion, Version)

Diese Methode testet, ob die DOM-Implementierung eine bestimmte Funktion und Version implementiert.

Die DocumentType- Objekte sind der Schlüssel für den Zugriff auf die Daten des Dokuments. Im Dokument kann das doctype-Attribut entweder den Wert Null oder den Wert DocumentType Object haben. Diese DocumentType-Objekte fungieren als Schnittstelle zu den für ein XML-Dokument beschriebenen Entitäten.

Attribute

In der folgenden Tabelle sind die Attribute des DocumentType- Objekts aufgeführt.

Attribut Art Beschreibung
Name DOMString Es gibt den Namen der DTD zurück, die direkt neben dem Schlüsselwort! DOCTYPE steht.
Entitäten NamedNodeMap Es gibt ein NamedNodeMap-Objekt zurück, das die in der DTD deklarierten allgemeinen externen und internen Entitäten enthält.
Notationen NamedNodeMap Es gibt eine NamedNodeMap zurück, die die in der DTD deklarierten Notationen enthält.
internalSubset DOMString Es gibt eine interne Teilmenge als Zeichenfolge zurück oder null, wenn keine vorhanden ist. Dies wurde entfernt. Siehe Spezifikationen .
publicId DOMString Es gibt die öffentliche Kennung der externen Teilmenge zurück.
systemId DOMString Es gibt die Systemkennung der externen Teilmenge zurück. Dies kann eine absolute URI sein oder nicht.

Methoden

DocumentType erbt Methoden von seinem übergeordneten Knoten und implementiert die ChildNode- Schnittstelle.

ProcessingInstruction gibt die anwendungsspezifischen Informationen an, die im Allgemeinen im Prologabschnitt des XML-Dokuments enthalten sind.

Verarbeitungsanweisungen (PIs) können verwendet werden, um Informationen an Anwendungen weiterzugeben. PIs können an einer beliebigen Stelle im Dokument außerhalb des Markups angezeigt werden. Sie können im Prolog, einschließlich der Dokumenttypdefinition (DTD), im Textinhalt oder nach dem Dokument erscheinen.

Ein PI beginnt mit einem speziellen Tag <? und endet mit ?>. Die Verarbeitung des Inhalts endet unmittelbar nach der Zeichenfolge?> angetroffen wird.

Attribute

In der folgenden Tabelle sind die Attribute des ProcessingInstruction- Objekts aufgeführt.

Attribut Art Beschreibung
Daten DOMString Es ist ein Zeichen, das die Informationen beschreibt, die die Anwendung unmittelbar vor dem?> Verarbeiten soll.
Ziel DOMString Dies identifiziert die Anwendung, an die der Befehl oder die Daten gerichtet sind.

Die Entitätsschnittstelle repräsentiert eine bekannte Entität, entweder analysiert oder nicht analysiert, in einem XML-Dokument. Das von Node geerbte nodeName- Attribut enthält den Namen der Entität.

Ein Entitätsobjekt hat keinen übergeordneten Knoten und alle seine Nachfolgeknoten sind schreibgeschützt.

Attribute

In der folgenden Tabelle sind die Attribute des Entity- Objekts aufgeführt.

Attribut Art Beschreibung
inputEncoding DOMString Dies gibt die Codierung an, die von der externen analysierten Entität verwendet wird. Sein Wert ist null, wenn es sich um eine Entität aus der internen Teilmenge handelt oder wenn sie nicht bekannt ist.
notationName DOMString Für eine nicht analysierte Entität gibt sie den Namen der Notation an und ihr Wert ist für die analysierten Entitäten null .
publicId DOMString Es gibt den Namen der öffentlichen Kennung an, die der Entität zugeordnet ist.
systemId DOMString Es gibt den Namen der Systemkennung an, die der Entität zugeordnet ist.
xmlEncoding DOMString Es gibt die XML-Codierung an, die als Teil der Textdeklaration für die externe analysierte Entität enthalten ist, andernfalls null.
xmlVersion DOMString Es gibt die XML-Version an, die als Teil der Textdeklaration für die externe analysierte Entität enthalten ist, andernfalls null.

Die EntityReference- Objekte sind die allgemeinen Entitätsreferenzen, die in das XML-Dokument eingefügt werden und einen Bereich zum Ersetzen des Texts bieten. Das EntityReference-Objekt funktioniert nicht für die vordefinierten Entitäten, da diese vom HTML- oder XML-Prozessor als erweitert betrachtet werden.

Diese Schnittstelle verfügt nicht über eigene Eigenschaften oder Methoden, sondern erbt von Node .

In diesem Kapitel werden wir uns mit dem XML-DOM- Notationsobjekt befassen . Die Notation Object-Eigenschaft bietet einen Bereich zum Erkennen des Formats von Elementen mit einem Notation-Attribut, einer bestimmten Verarbeitungsanweisung oder Nicht-XML-Daten. Die Eigenschaften und Methoden des Knotenobjekts können für das Notationsobjekt ausgeführt werden, da dies auch als Knoten betrachtet wird.

Dieses Objekt erbt Methoden und Eigenschaften vom Knoten . Sein Knotenname ist der Notationsname. Hat keine Eltern.

Attribute

In der folgenden Tabelle sind die Attribute des Notation- Objekts aufgeführt.

Attribut Art Beschreibung
publicID DOMString Es gibt den Namen der öffentlichen Kennung an, die der Notation zugeordnet ist.
systemID DOMString Es gibt den Namen der Systemkennung an, die der Notation zugeordnet ist.

Die XML-Elemente können als Bausteine ​​von XML definiert werden. Elemente können sich wie Container verhalten, die Text, Elemente, Attribute, Medienobjekte oder alle diese enthalten. Immer wenn der Parser ein XML-Dokument anhand der Form analysiert, navigiert der Parser durch einen Elementknoten. Ein Elementknoten enthält den darin enthaltenen Text, der als Textknoten bezeichnet wird.

Das Elementobjekt erbt die Eigenschaften und die Methoden des Knotenobjekts, da das Elementobjekt auch als Knoten betrachtet wird. Abgesehen von den Eigenschaften und Methoden des Knotenobjekts verfügt es über die folgenden Eigenschaften und Methoden.

Eigenschaften

In der folgenden Tabelle sind die Attribute des Element- Objekts aufgeführt.

Attribut Art Beschreibung
Verlinke den Namen DOMString Es gibt den Namen des Tags für das angegebene Element an.
schemaTypeInfo TypeInfo Es repräsentiert die diesem Element zugeordneten Typinformationen. Dies wurde entfernt. Siehe Spezifikationen .

Methoden

In der folgenden Tabelle sind die Methoden für Elementobjekte aufgeführt.

Methoden Art Beschreibung
getAttribute () DOMString Ruft den Wert des Attributs ab, falls für das angegebene Element vorhanden.
getAttributeNS () DOMString Ruft einen Attributwert nach lokalem Namen und Namespace-URI ab.
getAttributeNode () Attr Ruft den Namen des Attributknotens vom aktuellen Element ab.
getAttributeNodeNS () Attr Ruft einen Attr-Knoten anhand des lokalen Namens und des Namespace-URI ab.
getElementsByTagName () NodeList Gibt eine NodeList aller untergeordneten Elemente mit einem bestimmten Tag-Namen in Dokumentreihenfolge zurück.
getElementsByTagNameNS () NodeList Gibt eine NodeList aller untergeordneten Elemente mit einem bestimmten lokalen Namen und Namespace-URI in Dokumentreihenfolge zurück.
hasAttribute () Boolescher Wert Gibt true zurück, wenn für dieses Element ein Attribut mit einem bestimmten Namen angegeben ist oder einen Standardwert hat, andernfalls false.
hasAttributeNS () Boolescher Wert Gibt true zurück, wenn für dieses Element ein Attribut mit einem bestimmten lokalen Namen und Namespace-URI angegeben ist oder einen Standardwert hat, andernfalls false.
removeAttribute () Kein Rückgabewert Entfernt ein Attribut nach Namen.
removeAttributeNS Kein Rückgabewert Entfernt ein Attribut nach lokalem Namen und Namespace-URI.
removeAttributeNode () Attr Der angegebene Attributknoten wird aus dem Element entfernt.
setAttribute () Kein Rückgabewert Legt einen neuen Attributwert für das vorhandene Element fest.
setAttributeNS () Kein Rückgabewert Fügt ein neues Attribut hinzu. Wenn für das Element bereits ein Attribut mit demselben lokalen Namen und Namespace-URI vorhanden ist, wird sein Präfix als Präfixteil des qualifizierten Namens und sein Wert als Wertparameter geändert.
setAttributeNode () Attr Legt einen neuen Attributknoten für das vorhandene Element fest.
setAttributeNodeNS Attr Fügt ein neues Attribut hinzu. Wenn ein Attribut mit diesem lokalen Namen und diesem Namespace-URI bereits im Element vorhanden ist, wird es durch das neue ersetzt.
setIdAttribute Kein Rückgabewert Wenn der Parameter isId true ist, deklariert diese Methode das angegebene Attribut als benutzerdefiniertes ID-Attribut. Dies wurde entfernt. Siehe Spezifikationen .
setIdAttributeNS Kein Rückgabewert Wenn der Parameter isId true ist, deklariert diese Methode das angegebene Attribut als benutzerdefiniertes ID-Attribut. Dies wurde entfernt. Siehe Spezifikationen .

Die Attr- Schnittstelle repräsentiert ein Attribut in einem Element-Objekt. In der Regel werden die zulässigen Werte für das Attribut in einem dem Dokument zugeordneten Schema definiert. Attr- Objekte werden nicht als Teil des Dokumentbaums betrachtet, da sie keine untergeordneten Knoten des von ihnen beschriebenen Elements sind. Daher ist für die untergeordneten Knoten parentNode , previousSibling und nextSibling der Attributwert null .

Attribute

In der folgenden Tabelle sind die Attribute des Attributobjekt -

Attribut Art Beschreibung
Name DOMString Dies gibt den Namen des Attributs an.
spezifizierten Boolescher Wert Es ist ein boolescher Wert, der true zurückgibt, wenn der Attributwert im Dokument vorhanden ist.
Wert DOMString Gibt den Wert des Attributs zurück.
ownerElement Element Es gibt den Knoten an, dem das Attribut zugeordnet ist, oder null, wenn das Attribut nicht verwendet wird.
isId Boolescher Wert Es wird zurückgegeben, ob bekannt ist, dass das Attribut vom Typ ID ist (dh einen Bezeichner für sein Eigentümerelement enthält) oder nicht.

In diesem Kapitel werden wir uns mit dem XML DOM CDATASection-Objekt befassen . Der in einem XML-Dokument vorhandene Text wird je nach Deklaration analysiert oder nicht analysiert. Wenn der Text als PCDATA (Parse Character Data) deklariert ist, wird er vom Parser analysiert, um ein XML-Dokument in ein XML-DOM-Objekt zu konvertieren. Wenn der Text hingegen als nicht analysierte Zeichendaten (CDATA) deklariert wird, wird der darin enthaltene Text vom XML-Parser nicht analysiert. Diese werden nicht als Markup betrachtet und erweitern die Entitäten nicht.

Der Zweck der Verwendung des CDATASection-Objekts besteht darin, den Textblöcken zu entkommen, die Zeichen enthalten, die andernfalls als Markup angesehen würden. "]]>"Dies ist das einzige Trennzeichen, das in einem CDATA-Abschnitt erkannt wird, der den CDATA-Abschnitt beendet.

Das CharacterData.data-Attribut enthält den Text, der im CDATA-Abschnitt enthalten ist. Diese Schnittstelle erbt die CharatcterData Schnittstelle , über den Text - Schnittstelle.

Für das CDATASection-Objekt sind keine Methoden und Attribute definiert. Es implementiert nur direkt den Text - Schnittstelle.

In diesem Kapitel werden wir uns mit dem Kommentarobjekt befassen . Kommentare werden als Notizen oder Zeilen hinzugefügt, um den Zweck eines XML-Codes zu verstehen. Kommentare können verwendet werden, um verwandte Links, Informationen und Begriffe aufzunehmen. Diese können an einer beliebigen Stelle im XML-Code erscheinen.

Die Kommentarschnittstelle erbt die CharacterData- Schnittstelle, die den Inhalt des Kommentars darstellt.

Syntax

XML-Kommentar hat die folgende Syntax:

<!-------Your comment----->

Ein Kommentar beginnt mit <! - und endet mit ->. Sie können Textnotizen als Kommentare zwischen den Zeichen hinzufügen. Sie dürfen einen Kommentar nicht in den anderen verschachteln.

Für das Kommentarobjekt sind keine Methoden und Attribute definiert. Es erbt die seines übergeordneten Charakters CharacterData und indirekt die des Knotens .

Das XMLHttpRequest-Objekt erstellt ein Medium zwischen der Client- und der Serverseite einer Webseite, das von den vielen Skriptsprachen wie JavaScript, JScript, VBScript und anderen Webbrowsern zum Übertragen und Bearbeiten der XML-Daten verwendet werden kann.

Mit dem XMLHttpRequest-Objekt ist es möglich, den Teil einer Webseite zu aktualisieren, ohne die gesamte Seite neu zu laden, die Daten von einem Server anzufordern und zu empfangen, nachdem die Seite geladen wurde, und die Daten an den Server zu senden.

Syntax

Ein XMLHttpRequest-Objekt kann wie folgt instanziiert werden:

xmlhttp = new XMLHttpRequest();

Um mit allen Browsern, einschließlich IE5 und IE6, umzugehen, überprüfen Sie, ob der Browser das XMLHttpRequest-Objekt wie folgt unterstützt:

if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
   xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

Beispiele zum Laden einer XML-Datei mit dem XMLHttpRequest-Objekt finden Sie hier

Methoden

In der folgenden Tabelle sind die Methoden des XMLHttpRequest-Objekts aufgeführt.

S.No. Methode & Beschreibung
1

abort()

Beendet die aktuell gestellte Anfrage.

2

getAllResponseHeaders()

Gibt alle Antwortheader als Zeichenfolge zurück oder null, wenn keine Antwort empfangen wurde.

3

getResponseHeader()

Gibt die Zeichenfolge zurück, die den Text des angegebenen Headers enthält, oder null, wenn entweder die Antwort noch nicht empfangen wurde oder der Header nicht in der Antwort vorhanden ist.

4

open(method,url,async,uname,pswd)

Es wird in Verbindung mit der Send-Methode verwendet, um die Anforderung an den Server zu senden. Die Methode open gibt die folgenden Parameter an:

  • method - Gibt die Art der Anfrage an, dh Get oder Post.

  • url - Es ist der Speicherort der Datei.

  • async- gibt an, wie die Anfrage behandelt werden soll. Es ist ein boolescher Wert. wo,

    • 'true' bedeutet, dass die Anforderung asynchron verarbeitet wird, ohne auf eine HTTP-Antwort zu warten.

    • 'false' bedeutet, dass die Anforderung nach dem Empfang der HTTP-Antwort synchron verarbeitet wird.

  • uname - ist der Benutzername.

  • pswd - ist das Passwort.

5

send(string)

Es wird verwendet, um die Anforderung zu senden, die in Konjugation mit der Open-Methode arbeitet.

6

setRequestHeader()

Der Header enthält das Label / Wert-Paar, an das die Anforderung gesendet wird.

Attribute

In der folgenden Tabelle sind die Attribute des XMLHttpRequest-Objekts aufgeführt.

S.No. Attribut & Beschreibung
1

onreadystatechange

Es ist eine ereignisbasierte Eigenschaft, die bei jeder Statusänderung aktiviert wird.

2

readyState

Dies beschreibt den aktuellen Status des XMLHttpRequest-Objekts. Es gibt fünf mögliche Zustände der readyState-Eigenschaft:

  • readyState = 0 - bedeutet, dass die Anforderung noch nicht initialisiert wurde.

  • readyState = 1 - Anfrage ist gesetzt.

  • readyState = 2 - Anfrage wird gesendet.

  • readyState = 3 - Anfrage wird bearbeitet.

  • readyState = 4 - Anfrage ist abgeschlossen.

3

responseText

Diese Eigenschaft wird verwendet, wenn die Antwort vom Server eine Textdatei ist.

4

responseXML

Diese Eigenschaft wird verwendet, wenn die Antwort vom Server eine XML-Datei ist.

5

status

Gibt den Status des HTTP-Anforderungsobjekts als Nummer an. Zum Beispiel "404" oder "200".
6

statusText

Gibt den Status des HTTP-Anforderungsobjekts als Zeichenfolge an. Zum Beispiel "Nicht gefunden" oder "OK".

Beispiele

Der Inhalt von node.xml ist wie folgt :

<?xml version = "1.0"?>
<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>

Rufen Sie bestimmte Informationen einer Ressourcendatei ab

Das folgende Beispiel zeigt, wie bestimmte Informationen einer Ressourcendatei mit der Methode getResponseHeader () und der Eigenschaft readState abgerufen werden .

<!DOCTYPE html>
<html>
   <head>
      <meta http-equiv = "content-type" content = "text/html; charset = iso-8859-2" />
         <script>
            function loadXMLDoc() {
               var xmlHttp = null;
               if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
                  xmlHttp = new XMLHttpRequest();
               }
               else if(window.ActiveXObject) // for Internet Explorer 5 or 6 {
                  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
               }

               return xmlHttp;
            }

            function makerequest(serverPage, myDiv) {
               var request =  loadXMLDoc();
               request.open("GET", serverPage);
               request.send(null);

               request.onreadystatechange = function() {
                  if (request.readyState == 4) {
                     document.getElementById(myDiv).innerHTML = request.getResponseHeader("Content-length");
                  }
               }
            }
      </script>
   </head>
   <body>
      <button type = "button" onclick="makerequest('/dom/node.xml', 'ID')">Click me to get the specific ResponseHeader</button>
      <div id = "ID">Specific header information is returned.</div>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als elementattribute_removeAttributeNS.htm im Serverpfad (diese Datei und node_ns.xml sollten sich auf Ihrem Server auf demselben Pfad befinden). Wir erhalten die Ausgabe wie unten gezeigt -

Before removing the attributeNS: en
After removing the attributeNS: null

Abrufen von Header-Informationen einer Ressourcendatei

Das folgende Beispiel zeigt, wie die Header-Informationen einer Ressourcendatei mithilfe der Methode abgerufen werden getAllResponseHeaders() mit der Eigenschaft readyState.

<!DOCTYPE html>
<html>
   <head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
         <script>
            function loadXMLDoc() {
               var xmlHttp = null;

               if(window.XMLHttpRequest) // for Firefox, IE7+, Opera, Safari, ... {
                   xmlHttp = new XMLHttpRequest();
               } else if(window.ActiveXObject) //  for Internet Explorer 5 or 6 {
                   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
               }

                return xmlHttp;
            }

            function makerequest(serverPage, myDiv) {
               var request =  loadXMLDoc();
               request.open("GET", serverPage);
               request.send(null);
               request.onreadystatechange = function() {
                  if (request.readyState == 4) {
                     document.getElementById(myDiv).innerHTML = request.getAllResponseHeaders();
                  }
                }
            }
      </script>
   </head>
   <body>
      <button type = "button" onclick = "makerequest('/dom/node.xml', 'ID')">
         Click me to load the AllResponseHeaders</button>
      <div id = "ID"></div>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als http_allheader.html im Serverpfad (diese Datei und node.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten die Ausgabe wie unten gezeigt (abhängig vom Browser) -

Date: Sat, 27 Sep 2014 07:48:07 GMT Server: Apache Last-Modified: 
      Wed, 03 Sep 2014 06:35:30 GMT Etag: "464bf9-2af-50223713b8a60" Accept-Ranges: bytes Vary: Accept-Encoding,User-Agent 
      Content-Encoding: gzip Content-Length: 256 Content-Type: text/xml

Die DOMException stellt ein abnormales Ereignis dar, das auftritt , wenn eine Methode oder eine Eigenschaft verwendet wird.

Eigenschaften

In der folgenden Tabelle sind die Eigenschaften des DOMException-Objekts aufgeführt

S.No. Objektbeschreibung
1

name

Gibt einen DOMString zurück, der eine der Zeichenfolgen enthält, die einer Fehlerkonstante zugeordnet sind (siehe Tabelle unten).

Fehlertypen

S.No. Typ & Beschreibung
1

IndexSizeError

Der Index liegt nicht im zulässigen Bereich. Dies kann beispielsweise vom Range-Objekt ausgelöst werden. (Legacy-Code-Wert: 1 und Legacy-Konstantenname: INDEX_SIZE_ERR)

2

HierarchyRequestError

Die Knotenbaumhierarchie ist nicht korrekt. (Legacy-Code-Wert: 3 und Legacy-Konstantenname: HIERARCHY_REQUEST_ERR)

3

WrongDocumentError

Das Objekt befindet sich im falschen Dokument. (Legacy-Code-Wert: 4 und Legacy-Konstantenname: WRONG_DOCUMENT_ERR)

4

InvalidCharacterError

Die Zeichenfolge enthält ungültige Zeichen. (Legacy-Code-Wert: 5 und Legacy-Konstantenname: INVALID_CHARACTER_ERR)

5

NoModificationAllowedError

Das Objekt kann nicht geändert werden. (Legacy-Code-Wert: 7 und Legacy-Konstantenname: NO_MODIFICATION_ALLOWED_ERR)

6

NotFoundError

Das Objekt kann hier nicht gefunden werden. (Legacy-Code-Wert: 8 und Legacy-Konstantenname: NOT_FOUND_ERR)

7

NotSupportedError

Der Vorgang wird nicht unterstützt. (Legacy-Code-Wert: 9 und Legacy-Konstantenname: NOT_SUPPORTED_ERR)

8

InvalidStateError

Das Objekt befindet sich in einem ungültigen Zustand. (Legacy-Code-Wert: 11 und Legacy-Konstantenname: INVALID_STATE_ERR)

9

SyntaxError

Die Zeichenfolge stimmte nicht mit dem erwarteten Muster überein. (Legacy-Code-Wert: 12 und Legacy-Konstantenname: SYNTAX_ERR)

10

InvalidModificationError

Das Objekt kann auf diese Weise nicht geändert werden. (Legacy-Code-Wert: 13 und Legacy-Konstantenname: INVALID_MODIFICATION_ERR)

11

NamespaceError

Die Operation wird von Namespaces in XML nicht zugelassen. (Legacy-Code-Wert: 14 und Legacy-Konstantenname: NAMESPACE_ERR)

12

InvalidAccessError

Das Objekt unterstützt die Operation oder das Argument nicht. (Legacy-Code-Wert: 15 und Legacy-Konstantenname: INVALID_ACCESS_ERR)

13

TypeMismatchError

Der Typ des Objekts stimmt nicht mit dem erwarteten Typ überein. (Legacy-Code-Wert: 17 und Legacy-Konstantenname: TYPE_MISMATCH_ERR) Dieser Wert ist veraltet. Die JavaScript TypeError-Ausnahme wird jetzt anstelle einer DOMException mit diesem Wert ausgelöst.

14

SecurityError

Der Betrieb ist unsicher. (Legacy-Code-Wert: 18 und Legacy-Konstantenname: SECURITY_ERR)

15

NetworkError

Ein Netzwerkfehler ist aufgetreten. (Legacy-Code-Wert: 19 und Legacy-Konstantenname: NETWORK_ERR)

16

AbortError

Die Operation wurde abgebrochen. (Legacy-Code-Wert: 20 und Legacy-Konstantenname: ABORT_ERR)

17

URLMismatchError

Die angegebene URL stimmt nicht mit einer anderen URL überein. (Legacy-Code-Wert: 21 und Legacy-Konstantenname: URL_MISMATCH_ERR)

18

QuotaExceededError

Das Kontingent wurde überschritten. (Legacy-Code-Wert: 22 und Legacy-Konstantenname: QUOTA_EXCEEDED_ERR)

19

TimeoutError

Der Vorgang ist abgelaufen. (Legacy-Code-Wert: 23 und Legacy-Konstantenname: TIMEOUT_ERR)

20

InvalidNodeTypeError

Der Knoten ist falsch oder hat einen falschen Vorfahren für diese Operation. (Legacy-Code-Wert: 24 und Legacy-Konstantenname: INVALID_NODE_TYPE_ERR)

21

DataCloneError

Das Objekt kann nicht geklont werden. (Legacy-Code-Wert: 25 und Legacy-Konstantenname: DATA_CLONE_ERR)

22

EncodingError

Der Codierungsvorgang, bei dem es sich um einen Codierungs- oder einen Decodierungsvorgang handelt, ist fehlgeschlagen (kein Legacy-Codewert und kein konstanter Name).

23

NotReadableError

Der Eingabe- / Ausgabe-Lesevorgang ist fehlgeschlagen (kein Legacy-Code-Wert und Konstantenname).

Beispiel

Das folgende Beispiel zeigt, wie die Verwendung eines nicht wohlgeformten XML-Dokuments eine DOMException verursacht.

Der Inhalt von error.xml ist wie folgt :

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<Company id = "companyid">
   <Employee category = "Technical" id = "firstelement" type = "text/html">
      <FirstName>Tanmay</first>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
      <Email>[email protected]</Email>
   </Employee>
</Company>

Die Verwendung des folgende Beispiel zeigt Name Attribut -

<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>
         try {
            xmlDoc = loadXMLDoc("/dom/error.xml");
            var node  = xmlDoc.getElementsByTagName("to").item(0);
            var refnode = node.nextSibling;
            var newnode = xmlDoc.createTextNode('That is why you fail.');
            node.insertBefore(newnode, refnode);
         } catch(err) {
            document.write(err.name);
         }
      </script>
   </body>
</html>

Ausführung

Speichern Sie diese Datei als domexcption_name.html im Serverpfad (diese Datei und error.xml sollten sich auf Ihrem Server im selben Pfad befinden). Wir erhalten die Ausgabe wie unten gezeigt -

TypeError