DOM XML: carga

En este capítulo, estudiaremos sobre la carga y el análisis de XML .

Para describir las interfaces proporcionadas por la API, el W3C utiliza un lenguaje abstracto llamado Lenguaje de definición de interfaz (IDL). La ventaja de usar IDL es que el desarrollador aprende a usar DOM con su idioma favorito y puede cambiar fácilmente a un idioma diferente.

La desventaja es que, dado que es abstracto, los desarrolladores web no pueden utilizar el IDL directamente. Debido a las diferencias entre los lenguajes de programación, necesitan tener un mapeo, o enlace, entre las interfaces abstractas y sus lenguajes concretos. DOM se ha asignado a lenguajes de programación como Javascript, JScript, Java, C, C ++, PLSQL, Python y Perl.

En las siguientes secciones y capítulos, usaremos Javascript como nuestro lenguaje de programación para cargar archivos XML.

Analizador

Un analizador es una aplicación de software que está diseñada para analizar un documento, en nuestro caso un documento XML y hacer algo específico con la información. Algunos de los analizadores basados ​​en DOM se enumeran en la siguiente tabla:

S. No Analizador y descripción
1

JAXP

API Java de Sun Microsystem para análisis XML (JAXP)

2

XML4J

Analizador XML de IBM para Java (XML4J)

3

msxml

El analizador XML de Microsoft (msxml) versión 2.0 está integrado en Internet Explorer 5.5

4

4DOM

4DOM es un analizador para el lenguaje de programación Python

5

XML::DOM

XML :: DOM es un módulo de Perl para manipular documentos XML usando Perl

6

Xerces

Analizador de Java Xerces de Apache

En una API basada en árboles como DOM, el analizador recorre el archivo XML y crea los objetos DOM correspondientes. Entonces puedes atravesar la estructura DOM de un lado a otro.

Carga y análisis de XML

Al cargar un documento XML, el contenido XML puede presentarse en dos formas:

  • Directamente como archivo XML
  • Como cadena XML

Contenido como archivo XML

El siguiente ejemplo demuestra cómo cargar datos XML ( node.xml ) utilizando Ajax y Javascript cuando el contenido XML se recibe como un archivo XML. Aquí, la función Ajax obtiene el contenido de un archivo xml y lo almacena en XML DOM. Una vez que se crea el objeto DOM, se analiza.

<!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 mayoría de los detalles del código están en el código del script.

  • Internet Explorer usa ActiveXObject ("Microsoft.XMLHTTP") para crear una instancia del objeto XMLHttpRequest, otros navegadores usan el método XMLHttpRequest () .

  • la responseXML transforma el contenido XML directamente en el DOM XML.

  • Una vez que el contenido XML se transforma en DOM XML de JavaScript, puede acceder a cualquier elemento XML utilizando los métodos y propiedades de DOM de JS. Hemos utilizado las propiedades DOM como childNodes , nodeValue y métodos DOM como getElementsById (ID), getElementsByTagName (tags_name).

Ejecución

Guarde este archivo como loadingexample.html y ábralo en su navegador. Recibirá el siguiente resultado:

Contenido como cadena XML

El siguiente ejemplo demuestra cómo cargar datos XML utilizando Ajax y Javascript cuando el contenido XML se recibe como archivo XML. Aquí, la función Ajax obtiene el contenido de un archivo xml y lo almacena en XML DOM. Una vez que se crea el objeto DOM, se analiza.

<!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 mayoría de los detalles del código están en el código del script.

  • Internet Explorer usa ActiveXObject ("Microsoft.XMLDOM") para cargar datos XML en un objeto DOM, otros navegadores usan la función DOMParser () y el método parseFromString (text, 'text / xml') .

  • El texto variable deberá contener una cadena con contenido XML.

  • Una vez que el contenido XML se ha transformado en DOM XML de JavaScript, puede acceder a cualquier elemento XML utilizando los métodos y propiedades de DOM de JS. Hemos utilizado propiedades DOM como childNodes , nodeValue .

Ejecución

Guarde este archivo como loadingexample.html y ábralo en su navegador. Verá la siguiente salida:

Ahora que vimos cómo el contenido XML se transforma en DOM XML XML, ahora puede acceder a cualquier elemento XML utilizando los métodos DOM XML.