Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / DOM4J: Creación de archivos XML

DOM4J: Creación de archivos XML

Autor 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

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

SwingWorker con base de datos

SwingWorker con base de datos

Cuando se realizan aplicaciones en java con base de datos y se llega a un punto donde es necesario realizar una consulta...

Validación XML con Esquema XSD en PHP

Validación XML con Esquema XSD en PHP

En este post realizaremos un pequeño ejemplo de validación de archivos XML utilizando el esquema XSD y el lenguaje PHP (...

Pon a prueba tu código con Android Studio

Pon a prueba tu código con Android Studio

Realizar pruebas sobre nuestro código nos permiten comprobar su correcto funcionamiento e integración con otros módulos...

Store Procedure: Result Set

Store Procedure: Result Set

Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...

Convertir imagen a Base64

Convertir imagen a Base64

En este post vemos un ejemplo de como convertir un archivo de imagen en una cadena de texto codificado en Base64 aprovec...

Pequeño pero poderoso editor de texto para Ubuntu

Pequeño pero poderoso editor de texto para Ubuntu

Geany es un editor de texto para Sistemas Operativos Linux, windows y MAC que utiliza el kit de herramientas GTK+ con ca...

Comparte lo que sabes

Categorias

Últimas entradas

“MyBatis es una herramienta de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacena...

MyBatis es un framework de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados a part...

Webcam Capture es un API  que permite usar una cámara web incorporada o externa directamente desde código Java utilizand...

im4java es una interfaz pura de Java para la línea de comandos de ImageMagick. La interfaz de la línea de comandos de IM...

Herramientas

Generador de Enlaces a Whatsapp