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 http://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

Colocar imagenes en un JComboBox

Colocar imagenes en un JComboBox

Para agregar imágenes a un JComboBox, partiremos de un proyecto Netbeans con la siguiente estructura: Tenemos dos clases...

Guía básica: Trabajando con GitHub y Netbeans

Guía básica: Trabajando con GitHub y Netbeans

Netbeans tiene soporte para trabajar con varias herramientas de control de versiones, GIT es una de ellas, esta herramie...

Crear componentes en tiempo de ejecución con Netbeans

Crear componentes en tiempo de ejecución con Netbeans

🙂 Una de las preguntas más buscadas por programadores java es la de crear componentes swing en tiempo de ejecución, eso...

Uso de BitmapFont en LibGDX

Uso de BitmapFont en LibGDX

En este tutorial conoceremos lo que es el uso de BitmapFont en LibGDX y algún uso que le podemos dar como crear un menú,...

Uso de BorderPane

Uso de BorderPane

BorderPane es un layout que distribuye los nodos hijos en 5 posiciones TOP, LEFT, BOTTOM, RIGHT y CENTER Los nodos hijos...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama “Área de Notificación” es la sección de la barr...

Comparte lo que sabes

Categorias

Últimas entradas

En diciembre de 1990 se desarrolló una aplicación llamada WorldWideWeb en una máquina NeXT (programado con el lenguaje O...

En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Schema D...

Kali Linux es un sistema operativo de pruebas de intrusión con una gran colección de herramientas forenses y de segurida...

XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e...

Android Bolivia

MAUS