
SeraphimSerapis
Enthusiast
- 1.233
Hallo Leute, ich habe vor für meine Uni eine Mensa-App zu entwerfen.
Es gibt bereits eine vorgefertigte XML-Datei mit dem neuesten Speiseplan im Netz: http://www.studentenwerk-pb.de/fileadmin/xml/mensa.xml
Ausgelesen werden soll Text, sprich der Titel des Essens, und wann es das gibt. Sprich wenn ich in einem Spinner "Montag" auswähle, soll er jedes Essen für Montag anzeigen am zugehörigen Feld. Die anderen Elemente sind statisch.
Ich habe jetzt das Problem, dass ich das Ganze mit dem Sax-Parser auslesen möchte, jedoch hier mir einige Probleme entgegenkommen.
Erstens ist die XML-Datei "Windows-1252"-enkodiert, nicht ISO oder UTF8, was mir schon ein Problem bereitet.
Weiterhin weiss ich nicht genau, wo ich innerhalb des SAX-Parsers was genau ausführen muss, da ich mich mit diesem Thema im Studium nicht so stark beschäftigen musste.
Ich wollte den Inhalt zwischen Zwei Nodes folgend aufrufen:
hier meine startElement:
endElement entsprechend mit false.
So würde das ganze als Programm aussehen:
Dort wo false steht wären dann die dynamischen Inhalte.
Jemand Anregungen? Ideen?
Lg Tim
Es gibt bereits eine vorgefertigte XML-Datei mit dem neuesten Speiseplan im Netz: http://www.studentenwerk-pb.de/fileadmin/xml/mensa.xml
Ausgelesen werden soll Text, sprich der Titel des Essens, und wann es das gibt. Sprich wenn ich in einem Spinner "Montag" auswähle, soll er jedes Essen für Montag anzeigen am zugehörigen Feld. Die anderen Elemente sind statisch.
Ich habe jetzt das Problem, dass ich das Ganze mit dem Sax-Parser auslesen möchte, jedoch hier mir einige Probleme entgegenkommen.
Erstens ist die XML-Datei "Windows-1252"-enkodiert, nicht ISO oder UTF8, was mir schon ein Problem bereitet.
Weiterhin weiss ich nicht genau, wo ich innerhalb des SAX-Parsers was genau ausführen muss, da ich mich mit diesem Thema im Studium nicht so stark beschäftigen musste.
Ich wollte den Inhalt zwischen Zwei Nodes folgend aufrufen:
Code:
public void characters(char ch[], int start, int length) {
if(this.in_wochentag){
myParsedExampleDataSet.setWochentag(new String(ch, start, length));
}else if (this.in_von){
myParsedExampleDataSet.setVon(new String(ch, start, length));
}else if (this.in_bis){
myParsedExampleDataSet.setBis(new String(ch, start, length));
}else if (this.in_text){
myParsedExampleDataSet.setText(new String(ch, start, length));
}
}
hier meine startElement:
Code:
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
if (localName.equals("plan")) {
this.in_plan = true;
}else if (localName.equals("filiale")) {
this.in_filiale = true;
}else if (localName.equals("planbezeichnung")) {
this.in_planbezeichnung = true;
}else if (localName.equals("kw")) {
this.in_kw = true;
}else if (localName.equals("von")) {
this.in_von = true;
}else if (localName.equals("bis")) {
this.in_bis = true;
}else if (localName.equals("stand")) {
this.in_stand = true;
}else if (localName.equals("tag")) {
this.in_tag = true;
}else if (localName.equals("datum")) {
this.in_datum = true;
}else if (localName.equals("wochentag")) {
this.in_wochentag = true;
}else if (localName.equals("menue")) {
this.in_menue = true;
}else if (localName.equals("menu")) {
this.in_menu = true;
}else if (localName.equals("ausgabe")) {
this.in_ausgabe = true;
}else if (localName.equals("speisentyp")) {
this.in_speisentyp = true;
}else if (localName.equals("text")) {
this.in_text = true;
}else if (localName.equals("beilage")) {
this.in_beilage = true;
}else if (localName.equals("preis")) {
this.in_preis = true;
}else {
// nichts
}
}
endElement entsprechend mit false.
So würde das ganze als Programm aussehen:

Dort wo false steht wären dann die dynamischen Inhalte.
Jemand Anregungen? Ideen?
Lg Tim