Welcher XML Parser?

  • Hmmm kommt darauf an.... wie und wo du Ihn einsetzen willst


    Die von Android angebotenen Parser funktionieren gut und sind leicht einzubinden,
    ich hatte z.b. nur ein Problem beim Lesen von Feeds


    > der SAX parser hat einen Bug, deswegen ist seine Nutzung erst ab 2.2 fehlerfrei möglich, meine App sollte aber ab 2.1 fehlerfrei laufen. Also habe ich diese Alternative gefunden .


    http://www.thebuzzmedia.com/so…ple-java-xml-parser-sjxp/




    zum Verarbeiten lokaler XML Dateien (von SD Karte z.B.) benutze ich den XML Pullparser, der ist einfach zu strukturieren und unheimlich flexibel.

  • Ich mag lieber den SAX-Parser, aber ich gebe zu, dass der für Anfänger sehr gewöhnungsbedürftig ist. Man muss sich erst mal mit der Idee anfreunden, dass der SAX einem ständig Aufrufe startElement(), characters() und endElement() schickt und man selber hofft, dass das XML fehlerfrei ist - naja, sonst gibt's sowieso eine Exception um die Ohren gehauen.


    Aber eigentlich ist es das gleiche wie beim XMLPullParser, nur dass man nicht selber pull aufrufen muss und das Ergebnis auswerten - das ist bei SAX der Aufruf der entsprechenden Methoden.


    In beiden Fällen musst du deine Datenstruktur gut im Griff haben und immer an den richtigen Stellen die neuen Elemente eintragen. Dazu nehme ich gerne eine Variable vom Typ Object und wenn ich Daten zum eintragen hab, schaue ich erst mal mit aktuellesElement.getClass() nach, was ich eigentlich gerade in der Hand hab und entscheide dann, wo ich das eintrage. Und einen kleinen Stack mit den geöffneten Tags kann man sich manchmal auch gönnen.


    Die große Alternative dazu heißt DOM - da bekommst du das Document als Standard-Datenstruktur. Wenn du schon mal mit JavaScript im HTML rumgefummelt hast, dann war das DOM. Typische Aufrufe dort heißen getElementById oder getFirstChild - ja, so läuft auch der Zugriff in die XML-Dateien bei Android.


    DOM ist aber normalerweise nur sinnvoll, wenn man die Document-Struktur verändern oder speichern will - wenn man die Daten nur einmal lesen und in eine eigene Datenstruktur eintragen will, dann ist XMLPullParser oder SAX wesentlich einfacher.


    Man kann sich einen Parser aber auch selber bauen - das ist aber nur was für Liebhaber, denn einen Parser richtig gut zu bauen dauert dann doch wesentlich länger.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!