Leer XML con JDOM2 en Java

Hola a todos, hoy os voy a explicar como podemos crear un XML con JDOM2.

Con JDOM2 es fácil crear un XML, lo primero que necesitamos es descargar el JAR de JDOM desde su página oficial.

Debes añadir ese JAR como librería, te dejo un manual por sino sabes como se hace en netbeans.

Como usar Netbeans

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<concesionario>
    <coches>
        <coche matricula="1111AAA">
            <marca>AUDI</marca>
            <precio>30000</precio>
        </coche>
        <coche matricula="2222BBB">
            <marca>SEAT</marca>
            <precio>10000</precio>
        </coche>
        <coche matricula="3333CCC">
            <marca>BMW</marca>
            <precio>20000</precio>
        </coche>
        <coche matricula="4444DDD">
            <marca>TOYOTA</marca>
            <precio>10000</precio>
        </coche>
    </coches>
</concesionario>

Lo primero que haremos es buildear nuestro XML para obtener el elemento raíz:


SAXBuilder builder = new SAXBuilder();
File xml = new File("concesionario.xml");
Document document = builder.build(xml);
Element root = document.getRootElement();

Vamos a coger el elemento hijo coches:


List<Element> list = root.getChildren("coches");

Después, vamos a recoger los elementos hijos de coches.


System.out.println("Matricula\tMarca\tPrecio");
            
for (int i = 0; i < list.size(); i++) {

    Element coche = list.get(i);

    List<Element> valores_coche = coche.getChildren();

}

Ahora para cada coche leemos cada uno de sus campos, incluyendo el atributo matricula.


System.out.println("Matricula\tMarca\tPrecio");
            
for (int i = 0; i < list.size(); i++) {

    Element coche = list.get(i);

    List<Element> valores_coche = coche.getChildren();


    for (int j = 0; j < valores_coche.size(); j++) {

        Element campo = valores_coche.get(j);

        String matricula = campo.getAttributeValue("matricula");
        String marca = campo.getChildTextTrim("marca");
        String precio = campo.getChildTextTrim("precio");

        System.out.println(matricula + "\t\t" + marca + "\t" + precio);

    }
}

Este es el resultado final:

También os dejo un vídeo para que sea mas sencillo de seguir:

Os dejo el ejemplo completo:


import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class LeerXMLJDOM{

    public static void main(String[] args) {

        try {
            SAXBuilder builder = new SAXBuilder();
            File xml = new File("concesionario.xml");
            Document document = builder.build(xml);
            Element root = document.getRootElement();

            List<Element> list = root.getChildren("coches");

            System.out.println("Matricula\tMarca\tPrecio");

            for (int i = 0; i < list.size(); i++) {

                Element coche = list.get(i);

                List<Element> valores_coche = coche.getChildren();

                for (int j = 0; j < valores_coche.size(); j++) {

                    Element campo = valores_coche.get(j);

                    String matricula = campo.getAttributeValue("matricula");
                    String marca = campo.getChildTextTrim("marca");
                    String precio = campo.getChildTextTrim("precio");

                    System.out.println(matricula + "\t\t" + marca + "\t" + precio);

                }
            }

        } catch (JDOMException | IOException ex) {
            Logger.getLogger(Ejercicio_XML_Discoduroderoer_03.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *