Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/03/2015, 11:12
Avatar de veniwarez
veniwarez
 
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Leer XML varios bucles.

Mire el XML es como así:

<Ciutats>
<Ciutat>
<Nom>Torremolinos1</Nom>
<Provincia>Malaga</Provincia>
<Dades>
<Dada dia='2111-11-11'>
<TempMax>1.0</TempMax>
<TempMin>7.0</TempMin>
<TempAve>8.7</TempAve>
<VMax>8.0</VMax>
<VRatxa>28.0</VRatxa>
<Prec>29.8</Prec>
</Dada>
</Dades>
</Ciutat>
<Ciutat>
<Nom>Torremolinos2</Nom>
<Provincia>Malaga</Provincia>
<Dades>
<Dada dia='2111-01-14'>
<TempMax>2.0</TempMax>
<TempMin>7.0</TempMin>
<TempAve>8.7</TempAve>
<VMax>8.0</VMax>
<VRatxa>28.0</VRatxa>
<Prec>29.8</Prec>
</Dada>
</Dades>
</Ciutat>
<Ciutat>
<Nom>Torremolinos3</Nom>
<Provincia>Malaga</Provincia>
<Dades>
<Dada dia='2111-01-18'>
<TempMax>3.0</TempMax>
<TempMin>7.0</TempMin>
<TempAve>8.7</TempAve>
<VMax>8.0</VMax>
<VRatxa>28.0</VRatxa>
<Prec>29.8</Prec>
</Dada>
<Dada dia='2222-11-12'>
<TempMax>4.0</TempMax>
<TempMin>7.0</TempMin>
<TempAve>8.7</TempAve>
<VMax>8.0</VMax>
<VRatxa>28.0</VRatxa>
<Prec>29.8</Prec>
</Dada>
</Dades>
</Ciutat>
</Ciutats>



El problema de lo que uso para leerlo es que lo he sacado de un ejemplo que nos dio el profesor y que supe adaptar para leer una sola ciudad.

Su ejemplo era como así:


import java.io.File;
import java.io.IOException;

import javax.xml.parsers.*;

import org.apache.commons.cli.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;

public class Main {

/**
* Run the examples of use org.apache.commons.cli for arguments and read XML
* file the construct the object {@link Lecturer}
* @param args -h | -f path/of/file.xml
* @throws ParseException
* @throws IOException
* @throws ParserConfigurationException
* @throws SAXException
*/
public static void main(String[] args) throws ParseException, IOException, ParserConfigurationException, SAXException {

String fileName = "xml/Data.xml";
/**
* Read XML file
*/
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File file = new File(fileName);
Document document = builder.parse(file);

// Return ed element of XML file.
Element ed = document.getDocumentElement();

// Return lecturer elements list
NodeList lecturerList = ed.getElementsByTagName("Lecturer");
if(lecturerList != null && lecturerList.getLength() > 0) {
for (int i=0; i<lecturerList.getLength(); i++){

//Get a lecturer
Element lecturer = (Element) lecturerList.item(i);

//Get lecturer's email attribute
String email = lecturer.getAttribute("email");

//Get lecturer's name label
String name = new String();
NodeList nameList = lecturer.getElementsByTagName("name");
if(nameList != null && nameList.getLength() > 0) {
Element nameElement = (Element)nameList.item(0);
name = nameElement.getFirstChild().getNodeValue();

}
//Get lecturer's surnames label
String surnames = new String();
NodeList surnamesList = lecturer.getElementsByTagName("surnames");
if(surnamesList != null && surnamesList.getLength() > 0) {
Element surnamesElement = (Element)surnamesList.item(0);
surnames = surnamesElement.getFirstChild().getNodeValue();

}
System.out.println(" LECTURER "+(i+1));
System.out.println("-------------");
System.out.println(" NAME: "+name+" "+surnames);
System.out.println(" EMAIL: "+email);
System.out.println(" ");

}
}
}

}



En el ejercicio anterior yo lo adapté para leer de una ciudad, su nombre, provincia, y entonces leía las temperaturas, los días, vientos.... Funcionó