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.