XML DOM - Caricamento

In questo capitolo studieremo il caricamento e l' analisi di XML .

Per descrivere le interfacce fornite dall'API, il W3C utilizza un linguaggio astratto chiamato IDL (Interface Definition Language). Il vantaggio dell'utilizzo di IDL è che lo sviluppatore impara a utilizzare il DOM con la sua lingua preferita e può passare facilmente a una lingua diversa.

Lo svantaggio è che, poiché è astratto, IDL non può essere utilizzato direttamente dagli sviluppatori Web. A causa delle differenze tra i linguaggi di programmazione, devono avere una mappatura - o un legame - tra le interfacce astratte e i loro linguaggi concreti. DOM è stato mappato a linguaggi di programmazione come Javascript, JScript, Java, C, C ++, PLSQL, Python e Perl.

Nelle sezioni e nei capitoli seguenti, utilizzeremo Javascript come linguaggio di programmazione per caricare il file XML.

Parser

Un parser è un'applicazione software progettata per analizzare un documento, nel nostro caso un documento XML e fare qualcosa di specifico con le informazioni. Alcuni dei parser basati su DOM sono elencati nella tabella seguente:

S.No Parser e descrizione
1

JAXP

API Java di Sun Microsystem per analisi XML (JAXP)

2

XML4J

Parser XML di IBM per Java (XML4J)

3

msxml

Il parser XML di Microsoft (msxml) versione 2.0 è integrato in Internet Explorer 5.5

4

4DOM

4DOM è un parser per il linguaggio di programmazione Python

5

XML::DOM

XML :: DOM è un modulo Perl per manipolare documenti XML usando Perl

6

Xerces

Parser Java Xerces di Apache

In un'API basata su albero come DOM, il parser attraversa il file XML e crea gli oggetti DOM corrispondenti. Quindi puoi attraversare la struttura DOM avanti e indietro.

Caricamento e analisi di XML

Durante il caricamento di un documento XML, il contenuto XML può presentarsi in due forme:

  • Direttamente come file XML
  • Come stringa XML

Contenuto come file XML

L'esempio seguente mostra come caricare dati XML ( node.xml ) utilizzando Ajax e Javascript quando il contenuto XML viene ricevuto come file XML. Qui, la funzione Ajax ottiene il contenuto di un file xml e lo memorizza in XML DOM. Una volta creato l'oggetto DOM, viene quindi analizzato.

<!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 maggior parte dei dettagli del codice si trovano nel codice dello script.

  • Internet Explorer utilizza ActiveXObject ("Microsoft.XMLHTTP") per creare un'istanza dell'oggetto XMLHttpRequest, altri browser utilizzano il metodo XMLHttpRequest () .

  • il responseXML trasforma il contenuto XML direttamente in XML DOM.

  • Una volta che il contenuto XML è stato trasformato in JavaScript XML DOM, è possibile accedere a qualsiasi elemento XML utilizzando i metodi e le proprietà JS DOM. Abbiamo utilizzato le proprietà DOM come childNodes , nodeValue e metodi DOM come getElementsById (ID), getElementsByTagName (tags_name).

Esecuzione

Salva questo file come loadingexample.html e aprilo nel tuo browser. Riceverai il seguente output:

Contenuto come stringa XML

L'esempio seguente mostra come caricare dati XML utilizzando Ajax e Javascript quando il contenuto XML viene ricevuto come file XML. Qui, la funzione Ajax, ottiene il contenuto di un file xml e lo memorizza in XML DOM. Una volta creato l'oggetto DOM, viene analizzato.

<!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 maggior parte dei dettagli del codice si trovano nel codice dello script.

  • Internet Explorer utilizza ActiveXObject ("Microsoft.XMLDOM") per caricare dati XML in un oggetto DOM, altri browser utilizzano la funzione DOMParser () e il metodo parseFromString (text, 'text / xml') .

  • Il testo variabile conterrà una stringa con contenuto XML.

  • Una volta che il contenuto XML è stato trasformato in JavaScript XML DOM, è possibile accedere a qualsiasi elemento XML utilizzando i metodi e le proprietà JS DOM. Abbiamo utilizzato proprietà DOM come childNodes , nodeValue .

Esecuzione

Salva questo file come loadingexample.html e aprilo nel tuo browser. Vedrai il seguente output:

Ora che abbiamo visto come il contenuto XML si trasforma in JavaScript XML DOM, ora puoi accedere a qualsiasi elemento XML utilizzando i metodi XML DOM.