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.