1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. SeraphimSerapis, 23.10.2009 #1
    SeraphimSerapis

    SeraphimSerapis Threadstarter Android-Guru

    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:
    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:
    [​IMG]

    Dort wo false steht wären dann die dynamischen Inhalte.

    Jemand Anregungen? Ideen?
    Lg Tim
     
  2. andy114425, 25.07.2010 #2
    andy114425

    andy114425 Neuer Benutzer

    Hallo Tim,

    bist du schon weiter gekommen mit deiner App?

    Ich versuche mich momentan mit der Android Programmierung und wäre sehr interessiert an dem Quellcode zu dieser App.
    Ich habe mir als erste Projekt einen Währungsrechner vorgenommen. Dieser funktioniert auch schon, allerdings möchte ich nun immer die aktuellen Kurse von der Seite der Europäischen Zentralbank verwenden. Diese liegen ebenfalls in einer XML Datei vor (http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml). Ich komme aber einfach nicht weiter mit dem Auslesen der XML-Datei. Daher dachte ich mir, dass es vielleicht hilfreich sein könnte, eine ähnlich App zu haben, um den Quellcode zu studieren und daraus zu lernen...

    MfG Andreas
     
  3. DieGoldeneMitte, 25.07.2010 #3
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Der SaxParser ist schon relativ nahe dran an der Maschine.
    Wenn Du über den DomBuilder gehst, macht das System das charset Handling für Dich:

    Habe damit bisher die besten Erfahrungen gemacht.
    Hier ein Codefragment aus der Hüfte geschossen.

    Code:
    import org.w3c.dom.*;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    ...
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom = builder.parse( inputStream );
    Element root = dom.getDocumentElement();
    NodeList entries = root.getElementsByTagName("Cube");
    for( int i=0; i<entries.length(); i++ ) {
                    Node entry = entries.item(i);
                    NamedNodeMap attrs = entry.getAttributes();
                    String c = attrs.getNamedItem("currency").getNodeValue();
                    String r = attrs.getNamedItem("rate").getNodeValue();
    }
    
    PS: Das Content-Model der Datei ist aber eigenartig.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Neigungssensor ansprechen und wert ausgeben in App Android App Entwicklung Sonntag um 16:26 Uhr
MIT AppInventor App erstellen um PDFs zu öffnen, problem Android App Entwicklung 10.10.2018
Kosten/ Aufwand für ne Android App für Vereinsaufgaben? Android App Entwicklung 08.10.2018
Welches Tut/Buch/... für meine App-Idee? Android App Entwicklung 01.10.2018
App startet nicht - Wie, die Ursache finden? Android App Entwicklung 18.09.2018
Wert beim Start der App aus SharedPreferences auslesen Android App Entwicklung 10.09.2018
Datenschutzerklärung bei eigener App (ohne Erhebung von Daten) Android App Entwicklung 30.08.2018
Wie viele Klassen und Layouts brauche ich für meine App? Android App Entwicklung 05.08.2018
Android Studio - App stürtzt immer ab Android App Entwicklung 24.06.2018
Bluetooth LE mit MIT App Inventor 2 Android App Entwicklung 15.06.2018
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.