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.
<?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.
Deja una respuesta