XML DOM - Chargement

Dans ce chapitre, nous étudierons le chargement et l' analyse XML .

Afin de décrire les interfaces fournies par l'API, le W3C utilise un langage abstrait appelé Interface Definition Language (IDL). L'avantage d'utiliser IDL est que le développeur apprend à utiliser le DOM avec sa langue préférée et peut facilement passer à une autre langue.

L'inconvénient est que, puisqu'il est abstrait, l'IDL ne peut pas être utilisé directement par les développeurs Web. En raison des différences entre les langages de programmation, ils doivent avoir un mappage - ou une liaison - entre les interfaces abstraites et leurs langages concrets. DOM a été mappé à des langages de programmation tels que Javascript, JScript, Java, C, C ++, PLSQL, Python et Perl.

Dans les sections et chapitres suivants, nous utiliserons Javascript comme langage de programmation pour charger le fichier XML.

Analyseur

Un analyseur est une application logicielle conçue pour analyser un document, dans notre cas, un document XML et faire quelque chose de spécifique avec les informations. Certains des analyseurs basés sur DOM sont répertoriés dans le tableau suivant -

S. Non Analyseur et description
1

JAXP

API Java de Sun Microsystem pour l'analyse XML (JAXP)

2

XML4J

Analyseur XML d'IBM pour Java (XML4J)

3

msxml

L'analyseur XML de Microsoft (msxml) version 2.0 est intégré à Internet Explorer 5.5

4

4DOM

4DOM est un analyseur pour le langage de programmation Python

5

XML::DOM

XML :: DOM est un module Perl pour manipuler des documents XML en utilisant Perl

6

Xerces

L'analyseur Java Xerces d'Apache

Dans une API basée sur une arborescence comme DOM, l'analyseur parcourt le fichier XML et crée les objets DOM correspondants. Ensuite, vous pouvez parcourir la structure DOM dans les deux sens.

Chargement et analyse XML

Lors du chargement d'un document XML, le contenu XML peut se présenter sous deux formes -

  • Directement sous forme de fichier XML
  • En tant que chaîne XML

Contenu sous forme de fichier XML

L'exemple suivant montre comment charger des données XML ( node.xml ) à l'aide d'Ajax et de Javascript lorsque le contenu XML est reçu sous forme de fichier XML. Ici, la fonction Ajax récupère le contenu d'un fichier xml et le stocke dans XML DOM. Une fois que l'objet DOM est créé, il est ensuite analysé.

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

La plupart des détails du code se trouvent dans le code du script.

  • Internet Explorer utilise ActiveXObject ("Microsoft.XMLHTTP") pour créer une instance de l'objet XMLHttpRequest, les autres navigateurs utilisent la méthode XMLHttpRequest () .

  • le responseXML transforme le contenu XML directement en XML DOM.

  • Une fois le contenu XML transformé en JavaScript XML DOM, vous pouvez accéder à n'importe quel élément XML en utilisant les méthodes et propriétés JS DOM. Nous avons utilisé les propriétés DOM telles que childNodes , nodeValue et méthodes DOM telles que getElementsById (ID), getElementsByTagName (tags_name).

Exécution

Enregistrez ce fichier sous loadingexample.html et ouvrez-le dans votre navigateur. Vous recevrez la sortie suivante -

Contenu sous forme de chaîne XML

L'exemple suivant montre comment charger des données XML à l'aide d'Ajax et de Javascript lorsque le contenu XML est reçu sous forme de fichier XML. Ici, la fonction Ajax récupère le contenu d'un fichier xml et le stocke dans XML DOM. Une fois que l'objet DOM est créé, il est ensuite analysé.

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

La plupart des détails du code se trouvent dans le code du script.

  • Internet Explorer utilise ActiveXObject ("Microsoft.XMLDOM") pour charger des données XML dans un objet DOM, d'autres navigateurs utilisent la fonction DOMParser () et la méthode parseFromString (text, 'text / xml') .

  • Le texte variable doit contenir une chaîne avec un contenu XML.

  • Une fois que le contenu XML est transformé en JavaScript XML DOM, vous pouvez accéder à n'importe quel élément XML à l'aide des méthodes et propriétés JS DOM. Nous avons utilisé des propriétés DOM telles que childNodes , nodeValue .

Exécution

Enregistrez ce fichier sous loadingexample.html et ouvrez-le dans votre navigateur. Vous verrez la sortie suivante -

Maintenant que nous avons vu comment le contenu XML se transforme en JavaScript XML DOM, vous pouvez désormais accéder à n'importe quel élément XML en utilisant les méthodes XML DOM.