DOM XML - Carregando

Neste capítulo, estudaremos sobre carregamento e análise de XML .

Para descrever as interfaces fornecidas pela API, o W3C usa uma linguagem abstrata chamada Interface Definition Language (IDL). A vantagem de usar IDL é que o desenvolvedor aprende como usar o DOM com sua linguagem favorita e pode alternar facilmente para uma linguagem diferente.

A desvantagem é que, por ser abstrato, o IDL não pode ser usado diretamente por desenvolvedores da web. Devido às diferenças entre as linguagens de programação, eles precisam ter mapeamento - ou ligação - entre as interfaces abstratas e suas linguagens concretas. DOM foi mapeado para linguagens de programação como Javascript, JScript, Java, C, C ++, PLSQL, Python e Perl.

Nas seções e capítulos seguintes, usaremos Javascript como nossa linguagem de programação para carregar o arquivo XML.

Parser

Um analisador é um aplicativo de software desenvolvido para analisar um documento, no nosso caso documento XML, e fazer algo específico com as informações. Alguns dos analisadores baseados em DOM estão listados na tabela a seguir -

S.Não Analisador e Descrição
1

JAXP

API Java da Sun Microsystem para análise XML (JAXP)

2

XML4J

XML Parser da IBM para Java (XML4J)

3

msxml

O analisador XML da Microsoft (msxml) versão 2.0 está integrado ao Internet Explorer 5.5

4

4DOM

4DOM é um analisador para a linguagem de programação Python

5

XML::DOM

XML :: DOM é um módulo Perl para manipular documentos XML usando Perl

6

Xerces

Analisador Xerces Java do Apache

Em uma API baseada em árvore como o DOM, o analisador percorre o arquivo XML e cria os objetos DOM correspondentes. Em seguida, você pode percorrer a estrutura DOM para frente e para trás.

Carregando e analisando XML

Ao carregar um documento XML, o conteúdo XML pode vir em duas formas -

  • Diretamente como arquivo XML
  • Como string XML

Conteúdo como arquivo XML

O exemplo a seguir demonstra como carregar dados XML ( node.xml ) usando Ajax e Javascript quando o conteúdo XML é recebido como um arquivo XML. Aqui, a função Ajax obtém o conteúdo de um arquivo xml e o armazena em XML DOM. Depois que o objeto DOM é criado, ele é analisado.

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

A maioria dos detalhes do código estão no código do script.

  • O Internet Explorer usa ActiveXObject ("Microsoft.XMLHTTP") para criar uma instância do objeto XMLHttpRequest, outros navegadores usam o método XMLHttpRequest () .

  • o responseXML transforma o conteúdo XML diretamente em XML DOM.

  • Depois que o conteúdo XML é transformado em JavaScript XML DOM, você pode acessar qualquer elemento XML usando os métodos e propriedades JS DOM. Usamos as propriedades DOM, como childNodes , nodeValue e métodos DOM, como getElementsById (ID), getElementsByTagName (tags_name).

Execução

Salve este arquivo como loadingexample.html e abra-o em seu navegador. Você receberá a seguinte saída -

Conteúdo como string XML

O exemplo a seguir demonstra como carregar dados XML usando Ajax e Javascript quando o conteúdo XML é recebido como arquivo XML. Aqui, a função Ajax obtém o conteúdo de um arquivo xml e o armazena em XML DOM. Depois que o objeto DOM é criado, ele é analisado.

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

A maioria dos detalhes do código estão no código do script.

  • O Internet Explorer usa ActiveXObject ("Microsoft.XMLDOM") para carregar dados XML em um objeto DOM, outros navegadores usam a função DOMParser () e o método parseFromString (text, 'text / xml') .

  • O texto da variável deve conter uma string com conteúdo XML.

  • Depois que o conteúdo XML é transformado em JavaScript XML DOM, você pode acessar qualquer elemento XML usando métodos e propriedades JS DOM. Usamos propriedades DOM, como childNodes , nodeValue .

Execução

Salve este arquivo como loadingexample.html e abra-o em seu navegador. Você verá a seguinte saída -

Agora que vimos como o conteúdo XML se transforma em JavaScript XML DOM, agora você pode acessar qualquer elemento XML usando os métodos XML DOM.