Ejercicio de lectura de XML

Ejercicio: Obtener la marca y modelo del coche más barato en coches.xml

Fichero coches.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<concesionario>
  <coche id="1">
    <marca>Renault</marca>
    <modelo>Megane</modelo>
    <precio>16000</precio>
  </coche>
  <coche id="2">
    <marca>Seat</marca>
    <modelo>Toledo</modelo>
    <precio>12000</precio>
  </coche>
  <coche id="3">
    <marca>Suzuki</marca>
    <modelo>Vitara</modelo>
    <precio>15000</precio>
  </coche>
</concesionario>

Coche.java:

public class Coche {
    private String marca;
    private String modelo;
    private int precio;

    public Coche (String marca, String modelo, int precio) {
        this.marca = marca;
        this.modelo = modelo;
        this.precio = precio;
    }
    
    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public int getPrecio() {
        return precio;
    }

    public void setPrecio(int precio) {
        this.precio = precio;
    }

    @Override
    public String toString () {
        return this.marca + ", " + this.modelo + ", " + this.precio;
    }

}

LecturaXML.java:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;

public class LecturaXML {

    public static final String FICHERO = "coches.xml";

    public static void main(String[] args) {
        ArrayList<Coche> coches = new ArrayList<Coche>();
        Coche coche;
        String marca = "";
        String modelo = "";
        int precio = 0;
        int minimo = Integer.MAX_VALUE;
        int posicion = 0;

        try {
            File file = new File(FICHERO);

            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(file);

            // estos métodos podemos usarlos combinados para normalizar el archivo XML
            doc.getDocumentElement().normalize();

            System.out.println("Nombre del nodo principal: " + doc.getDocumentElement().getNodeName());

            // almacenamos los nodos para luego mostrar la
            // cantidad de ellos con el método getLength()
            NodeList nList = doc.getElementsByTagName("coche");
            System.out.println("Número de coches: " + nList.getLength());

            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
       
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;

                    marca = eElement.getElementsByTagName("marca").item(0).getTextContent();
                    modelo = eElement.getElementsByTagName("modelo").item(0).getTextContent();
                    precio = Integer.parseInt(eElement.getElementsByTagName("precio").item(0).getTextContent());

                    System.out.println("\nCoche id: " + eElement.getAttribute("id"));
                    System.out.println("Marca: " + marca);
                    System.out.println("Modelo: " + modelo);
                    System.out.println("Precio: " + precio);

                    //if (precio < minimo) {
                    //	minimo = precio;
                    //	marca_minimo = marca;
                    //	modelo_minimo = modelo;
                    //}
                }

                coche = new Coche(marca, modelo, precio);
                coches.add(coche);
            }
            System.out.println();
            System.out.println("Coches:");

            // for (Coche c: coches) {
            for (int i = 0; i < coches.size(); i++) {
                System.out.println(coches.get(i));
                if (coches.get(i).getPrecio() < minimo) {
                    minimo = coches.get(i).getPrecio();
                    posicion = i;
                }
            }
            System.out.println("Menor precio: " + coches.get(posicion));
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 

 

Deja una respuesta