Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/03/2015, 12:57
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.

Esta es el mejor lector que he podido hacer hasta el momento ya que lee todas las ciudades y lo más importante, lee todos los días. El problema es que lee los días al final y como podemos comprobar en "nom"+name, los lee despues de haber leido las diferentes ciudades o sea ahora lee así C (Ciudad) D (Dia)>> C1,C2,C3,D1,D2,D3,D4,D5 cuando tendría que leer por ejemplo C1,D1,C2,D2,C3,D3,D4,D5.

Alguna idea para solucionar este problema?

Codigo:



import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import javax.xml.parsers.*;

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 {
inicialitzar();

}




public static void inicialitzar() throws ParseException, IOException, ParserConfigurationException, SAXException{
String fileName = "xml/dades2.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();
String name="";
String province="";
// Return lecturer elements list
NodeList lecturerList = ed.getElementsByTagName("Ciutat");
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 name label
name = new String();
NodeList nameList = lecturer.getElementsByTagName("Nom");
if(nameList != null && nameList.getLength() > 0) {
Element nameElement = (Element)nameList.item(0);
name = nameElement.getFirstChild().getNodeValue();

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

}
//tco=new TempsCiutatOrdenat(name,province,maxim);
System.out.println("----------------------------------");

System.out.println(" CITY: "+name);

System.out.println(" PROVINCE: "+province);
System.out.println("----------------------------------");

}

String dia="";
float tempMax=0F;
float tempMin=0F;
float tempAve=0F;
float vMax=0F;
float vRatxa=0F;
float prec=0F;
NodeList lecturerList2 = ed.getElementsByTagName("Dada");
if(lecturerList2 != null && lecturerList2.getLength() > 0) {
for (int i2=0; i2<lecturerList2.getLength(); i2++){
Element lecturer2 = (Element) lecturerList2.item(i2);
dia = lecturer2.getAttribute("dia");
//Get a lecturer


//Get lecturer's name label
NodeList nameList = lecturer2.getElementsByTagName("TempMax");
if(nameList != null && nameList.getLength() > 0) {
Element nameElement = (Element)nameList.item(0);
tempMax = Float.parseFloat(nameElement.getFirstChild().getNo deValue());

}
//Get lecturer's name label

NodeList provinceList = lecturer2.getElementsByTagName("TempMin");
if(provinceList != null && provinceList.getLength() > 0) {
Element nameElement = (Element)provinceList.item(0);
tempMin = Float.parseFloat(nameElement.getFirstChild().getNo deValue());
}

provinceList = lecturer2.getElementsByTagName("TempAve");
if(provinceList != null && provinceList.getLength() > 0) {
Element nameElement = (Element)provinceList.item(0);
tempAve = Float.parseFloat(nameElement.getFirstChild().getNo deValue());
}

provinceList = lecturer2.getElementsByTagName("VMax");
if(provinceList != null && provinceList.getLength() > 0) {
Element nameElement = (Element)provinceList.item(0);
vMax = Float.parseFloat(nameElement.getFirstChild().getNo deValue());
}

provinceList = lecturer2.getElementsByTagName("VRatxa");
if(provinceList != null && provinceList.getLength() > 0) {
Element nameElement = (Element)provinceList.item(0);
vRatxa = Float.parseFloat(nameElement.getFirstChild().getNo deValue());
}

provinceList = lecturer2.getElementsByTagName("Prec");
if(provinceList != null && provinceList.getLength() > 0) {
Element nameElement = (Element)provinceList.item(0);
prec = Float.parseFloat(nameElement.getFirstChild().getNo deValue());
}
DateFormat d1 = new SimpleDateFormat("yyyy-MM-dd");
Date data1 = d1.parse(dia);
//tco.afegirTempsDia(data1, tempMax, tempMin, tempAve, vMax, vRatxa, prec);

System.out.println("**************************");
System.out.println(" DIA: "+dia+" nom"+name);
System.out.println(" TEMP MAX:"+tempMax);
System.out.println(" TEMP MIN:"+tempMin);
System.out.println(" TEMP AVE:"+tempAve);
System.out.println(" TEMP VMAX:"+vMax);
System.out.println(" TEMP VRATXA:"+vRatxa);
System.out.println(" TEMP PREC:"+prec);

}



}
}
}

}

Última edición por veniwarez; 29/03/2015 a las 13:13