1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Regex oder Parser?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Unicate, 16.12.2011.

  1. Unicate, 16.12.2011 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Hallo alle zusammen!

    Ich habe eine XML zu lesen. Ich starte also einen HttpRequest.

    Jetzt die Frage:

    Ich könnte den InputStream des HttpResponses in einen Parser schiessen oder aber die xml als String einlesen und über einen regex ziehen.

    Was ist schneller?
     
  2. the_alien, 16.12.2011 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Je nach Struktur der XML kannst du es nicht mehr über einen Regex auswerten lassen und brauchst einen Parser.
     
  3. Unicate, 16.12.2011 #3
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Naja, im Moment mach ich das schon mit einem Parser. Die frage ist, ob es mit einem Regex schneller gehen würde.

    Kennst du einen Fall wo man mit dem regex nicht weiterkommen würde?
     
  4. DieGoldeneMitte, 16.12.2011 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Die Faustregel ist:

    XML per Regex zu parsen ist eine Straße in die Hölle.

    Das mag bei einfachen, bekannten und "sicheren" (=aus zuverlässiger Quelle) XML Dateien noch gehen (da mache ich es auch lieber, weils so einfach ist), aber sobald man mit CDATA (<item><![CDATA[<item>]]></item>), geschachtelten Tagnamen oder großen XML Dateien zu tun hat, hat man damit keine Freude mehr.

    Nicht parsbar ist es spätestens in dem Moment, wenn man ein Element hat, dass sich selbst enthalten kann. Siehe in XHTML das Element <div>. Da kann man zwar noch mit Krücken weitermachen (schachteltiefe zählen), aber da baust du im Prinzip den Parser dann selber nach. => bringt also nicht wirklich was.

    Wenn du schon einen Parser hast, spricht das dafür, dabei zu bleiben.
     
    Zuletzt bearbeitet: 16.12.2011
  5. Unicate, 16.12.2011 #5
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ok, danke für den Hinweis.

    Und ist es dann schneller?
     
  6. DieGoldeneMitte, 16.12.2011 #6
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Zuletzt bearbeitet: 16.12.2011
  7. MichaelS, 17.12.2011 #7
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Es gibt auch Unterschiede beim Parsen :) Wenn du das ganze XML zu einem Objekt Baum zusammen baust, kostet das deutlich mehr Performance als wenn du im Stream deine Infos raus ziehst :)
     

Diese Seite empfehlen