XML DOM - Laden

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