Icono play
Java
XML Parser

Para poder usar documentos XML dentro de las aplicaciones o proyectos que desarrollemos en Java es importante llevar a cabo un procedimiento que es conocido como parsear.

Esto no es otra que analizar el documento XML con el que estamos trabajando y extraer la información que necesitamos, dándole el formato que requiere nuestro programa para ejecutar las instrucciones que hemos codificado.

Para hacer esta tarea se utiliza una herramienta conocida como parseador o analizador de HTML.

¿Qué es un parser XML?

Un parser XML, también conocido como analizador XML, es una librería o un software que contiene las herramientas necesarias para que las aplicaciones o proyectos que desarrollemos puedan trabajar con documentos XML y extraer de estos la información que requieren para funcionar adecuadamente.

¿Cómo funciona parser XML?

Cuando parseamos XML, el analizador o parserXML toma el documento que estamos empleando, lo analiza para determinar si este está bien estructurado y cumple con todos los requerimientos de XML para que este sea válido.

Una vez que se ha producido esta validación o comprobación, entonces podremos hacer la codificación necesaria para extraer datos de ese documento XML y usarlos en el proyecto que estamos construyendo.

Tipos de ParserXML

Los parser para XML se dividen en dos grupos:

  • DOM
  • SAX

Parser XML (DOM) para Java

DOM o document object model es una especificación de un API que nos permite acceder y modificar documentos escritos en XML.

Este tipo de parsers en Java permiten hacer las siguientes tareas:

  • Crear un documento XML
  • Analizar un documento XML
  • Extraer información de un documento XML

Como ejemplos de parserXML (DOM) podemos mencionar: Oracle XML parser for Java, XML for Java, Xerces, etc 

Parser XML (SAX) para Java

SAX o simple api for XML es una api especialmente diseñada para extraer información de documentos XML sin permitir la modificación de la estructura de los mismos.

El más usado es Xerces, que curiosamente también permite trabajar con DOM.

El acceso a los documentos XML mediante SAX es mucho más sencillo, puesto que requiere menos codificación, pero también tiene menos capacidad que los parsers tipo DOM.

Ahora bien, la decisión sobre cuál tipo de parser XML usar va a depender en buena medida del tipo de proyecto que estemos desarrollando y de la manera como esté estructurado el archivo XML que vamos a analizar.

Ejemplo de parserXML

En primer lugar, veremos un archivo XML bastante sencillo que servirá de base para observar algunos aspectos del parserXML

<?xml version="1.0" encoding="UTF-8" ?>



<credenciales>

    <usuario>openbootcamp</usuario>

    <clave>EstoEs1clave^_^</clave>

    <videos proveedor="vimeo" bootcamp="open-bootcamp">

        <video>Primera sesión</video>

        <video>Segunda sesión</video>

        <video>Tercera sesión</video>

    </videos>

+</credenciales>

Para acceder a la información de este archivo XML en particular, el código necesario se ve como sigue:

package ejemploXML;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;



public class Main {

    public static void main(String[] args) {
        File file = new File("datos.xml");
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

        try {
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            try {
                // Analizamos el documento
                Document document = documentBuilder.parse(file);

                // Obtenemos usuario y clave
                String usuario = document.getElementsByTagName("usuario").item(0).getTextContent();
                String clave = document.getElementsByTagName("clave").item(0).getTextContent();

                // Mostramos usuario y clave:
                System.out.println("Usuario: " + usuario + " Clave: " + clave);

                // Vamos a mostrar el atributo "proveedor"
                NamedNodeMap atributos = document.getElementsByTagName("videos").item(0).getAttributes();

                for (int i = 0; i < atributos.getLength(); i++) {
                    String atributoNombre = atributos.item(i).getNodeName();
                    String atributoValor = atributos.item(i).getNodeValue();
                    System.out.println("Atributo " + atributoNombre + " contiene " + atributoValor);
                }

                // Mostramos los videos que hay asociados
                NodeList videos = document.getElementsByTagName("videos");
                for (int i = 0; i < videos.getLength(); i++) {
                    Node video = videos.item(i);
                    System.out.print(video.getTextContent());
                }

            } catch (Exception e) {
                System.out.println("Error procesando documento:" + e.getMessage());
            }
        } catch (Exception e) {
            System.out.println("Error al utilizar el builder: " + e.getMessage());
        }
    }

}
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: