Hallo,
ich versuche aus einer XML Datei Daten auszulesen und in eine Arraylist zu packen, um sie dann zu sortieren.
Ich habe jetzt eine eigene Klasse erstellt, in der ich die Datentypen aus dem XML definiere.
edit: aus dem xml kommen nur Strings. Ich definiere hier die ArrayList. (denke ich)
Ich muss zugeben, das ich diese Definition aus dem Netz habe, und sie nach meinen Wünschen geändert habe.
Wenn ich jetzt eine ArrayList<Race> erstelle und meine werte mit add einlesen möchte, dann werden nur die Strings in die Liste übernommen. Die Zahlenwerte nicht.
hier die Ausgabe
in der 1. Spalte sollte eingendlich die ID liegen. Wenn ich direkt einlese (über dem list.add) werden die Werte ausgegeben. Genauso in der 4. und 5. Spalte.
Ich denke das ich beim casten den Fehler suchen muss, finde ihn aber nicht.
Über ne Gedankenstütze bin ich dankbar.
LG
Pagaty
ich versuche aus einer XML Datei Daten auszulesen und in eine Arraylist zu packen, um sie dann zu sortieren.
Ich habe jetzt eine eigene Klasse erstellt, in der ich die Datentypen aus dem XML definiere.
edit: aus dem xml kommen nur Strings. Ich definiere hier die ArrayList. (denke ich)
Java:
class Race {
Integer ID;
String Datum;
String Fahrer1;
Integer f1b1runden;
Double f1b1zeit;
public Race(Integer ID, String Datum, String Fahrer1, Integer f1b1runden, Double f1b1zeit) {
this.ID = 0;
this.Datum = Datum;
this.Fahrer1 = Fahrer1;
this.f1b1runden = 0;
this.f1b1zeit = 0.0;
}
@Override
public String toString() {
return ID+"\t"+Datum+"\t"+Fahrer1+"\t"+f1b1runden+"\t"+f1b1zeit;
}
}
Wenn ich jetzt eine ArrayList<Race> erstelle und meine werte mit add einlesen möchte, dann werden nur die Strings in die Liste übernommen. Die Zahlenwerte nicht.
Java:
ArrayList<Race> list = new ArrayList<Race>();
Iterator itr = datei.getRootElement().getChildren("Zeitstempel").iterator();
for (int zeile=0; zeile<meinInteger; zeile++){
if (itr.hasNext()) {
Element elem = (Element) itr.next();
System.out.println(elem.getText());
System.out.println(elem.getAttributeValue("ID"));
System.out.println(elem.getAttributeValue("F1"));
System.out.println(Integer.parseInt(elem.getAttributeValue("f1_b1_runden")));
System.out.println(Double.parseDouble(elem.getAttributeValue("f1_b1_zeit")));
list.add( new Race (Integer.parseInt(elem.getAttributeValue("ID")),elem.getTextTrim(),elem.getAttributeValue("F1"),Integer.parseInt(elem.getAttributeValue("f1_b1_runden")),Double.parseDouble(elem.getAttributeValue("f1_b1_zeit"))));
//System.out.println("pass");
}
}
for (Object o : list) {
System.out.println(o);
}
hier die Ausgabe
Code:
6
Chris
18
8.987
0 14.12.2012 Paul 0 0.0
0 14.12.2012 Peter 0 0.0
0 14.12.2012 JK 0 0.0
0 14.12.2012 Paul 0 0.0
0 19.12.2012 Michi 0 0.0
0 20.12.2012 Chris 0 0.0
in der 1. Spalte sollte eingendlich die ID liegen. Wenn ich direkt einlese (über dem list.add) werden die Werte ausgegeben. Genauso in der 4. und 5. Spalte.
Ich denke das ich beim casten den Fehler suchen muss, finde ihn aber nicht.
Über ne Gedankenstütze bin ich dankbar.
LG
Pagaty