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
Lo siento, debes estar conectado para publicar un comentario.