Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / DOM4J: Creación de archivos XML

DOM4J: Creación de archivos XML

Por jc mouse viernes, febrero 1, 2019

DOM4J es una de las librerías para java más populares para el trabajo con XML ya que nos permite crea, editar y leer documentos XML.

La ultima versión a la fecha es 2.1.1 para java 8 y superior, puedes descargar la librería desde su sitio web dom4j.github.io, ademas para este post, también necesitamos la librería JAXEN.

Entre las clases más importante de DOM4J tenemos:

  • Document: Define un documento XML.
  • Element: Representa un elemento, nodo o rama del XML. Un elemento puede tener espacios de nombres declarados, atributos, elementos secundarios y contenido textual
  • Attribute:  Es una manera de incorporar características o propiedades a los elementos de un documento.
  • Text: Representa el contenido que va entre las etiquetas XML
  • Comment: Permite agrega un comentario al documento XML

La siguiente clase te permite crear un documento XML, guardarlo en disco y también leerlo:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * @see https://www.jc-mouse.net
 * @author mouse
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Document doc = crearXML();

        escribirArchivoXML(doc, OutputFormat.createPrettyPrint(), "E:\\tmp\\productos.xml");
        leerArchivoXML("E:\\tmp\\productos.xml");

    }

    public static Document crearXML() {
        Document document = DocumentHelper.createDocument();

        Element root = document.addElement("ListaProductos")
                .addAttribute("Titulo", "Productos de Invierno");
        root.addComment("Producto #1");

        Element p1Element = root
                .addElement("Producto");

        p1Element
                .addElement("Nombre")
                .addText("Paraguas");

        p1Element
                .addElement("Descripcion")
                .addText("Made in China");

        p1Element
                .addElement("Precio")
                .addAttribute("Moneda", "Bs")
                .addText("100");

        root.addComment("Producto #2");

        Element p2Element = root
                .addElement("Producto");

        p2Element
                .addElement("Nombre")
                .addText("Guantes de lana");

        p2Element
                .addElement("Descripcion")
                .addText("Lana de alpaca");

        p2Element
                .addElement("Precio")
                .addAttribute("Moneda", "Bs")
                .addText("45");

        return document;
    }

    /**
     * @param document
     * @param format OutputFormat.createPrettyPrint()
     * OutputFormat.createCompactFormat()
     * @param dir
     */
    public static void escribirArchivoXML(Document document, OutputFormat format, String dir) {
        try (FileWriter fileWriter = new FileWriter(dir)) {
            XMLWriter writer = new XMLWriter(fileWriter, format);
            writer.write(document);
            writer.close();
        } catch (IOException ex) {
            System.err.println("IOException :" + ex.getMessage());
        }
    }

    /**
     * @param dir Direccion del archivo XML a leer
     */
    public static void leerArchivoXML(String dir) {
        Document document = abrirDocumento(dir);
        if (document != null) {
            Element rootElement = document.getRootElement();
            System.out.println(rootElement.attributeValue("Titulo"));
            Iterator itr = rootElement.elementIterator();
            for (Iterator<Element> it = itr; it.hasNext();) {
                Element element = it.next();
                System.out.println("|-" + element.getName());
                System.out.println("  |-- Nombre : " + element.selectSingleNode("Nombre").getText());
                System.out.println("  |-- Descripcion : " + element.selectSingleNode("Descripcion").getText());
                System.out.println("  |-- Precio : " + element.selectSingleNode("Precio").getText() + " "
                        + ((Element) element.selectSingleNode("Precio")).attributeValue("Moneda"));
            }
        }
    }

    /**
     * @param dir Direccion del archivo XML a leer
     * @return Document
     */
    public static Document abrirDocumento(String dir) {
        try {
            File inputFile = new File(dir);
            SAXReader reader = new SAXReader();
            return reader.read(inputFile);
        } catch (DocumentException e) {
            System.err.println("DocumentException: " + e.getMessage());
        }
        return null;
    }

}

El código en si que crea el documento XML se encuentra en el método crearXML(), se podrá observa lo intuitivo que es su implementación gracias a la librería JDOM4J, a continuación podremos ver que parte del código java genera que etiqueta XML:

estructura XML

Ejecutando el programa, podremos obtener el siguiente archivo XML

Y cuando leemos este archivo obtenemos por consola lo siguiente:

read xml files

enjoy!!!

Tags

Artículos similares

Google Open Source: Código Abierto +2000 proyectos

Google abre las puertas de Google Open Source un nuevo sitio web que une todos sus proyectos de «Código Abierto» que ha[...]

Introducción a Spark Framework

Spark Framework es un conjunto de librerías para los lenguajes Java y Kotlin que nos sirve para el desarrollo rápido y s[...]

Curso gratuito de programación Python de Microsoft

Microsoft el gigante de la tecnología está tratando de hacer que Python sea más fácil de comprender para aquellos intere[...]

JavaScript: Script y Web para generar banderas ondeando

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des[...]

MultiHilos: Comunicación Cliente/Servidor en Java

En anteriores post construimos aplicaciones Cliente/Servidor los cuales intercambiaban mensajes de una forma secuencial[...]

Hola Mundo con Firebase

Firebase es la plataforma para el desarrollo de aplicaciones web y aplicaciones móviles de Google el cual se centra en e[...]