Akku: Was macht ein XML:Parser?

Ich habe eine XML-Datei, die ich mit PERL auswerten will.
Nun gibt es ja ein Modul XML::Parser. Nur was macht das bzw. was macht ein XML-Parser allgemein?
Ich koennte doch unter PERL mir auch ein kleines Programm schreiben, was mir, die mich interessierenden Zeilen mit den Werten die ich benoetige, heraus sucht.
Wo ist bei einem Parsing-Modul dann der Vorteil?

Danke Akku

  1. hi!

    Ich koennte doch unter PERL mir auch ein kleines Programm schreiben,
    was mir, die mich interessierenden Zeilen mit den Werten die ich
    benoetige, heraus sucht.

    Ja.

    Wo ist bei einem Parsing-Modul dann der Vorteil?

    Was du dann schreibst, ist auch in gewissem Sinne ein Parser. Der
    Parser überprüft die Syntax und zerlegt einen String eben gemäß dieser
    Syntax in einzelne Tokens.

    bye, Frank!

    1. hi!

      Ich koennte doch unter PERL mir auch ein kleines Programm schreiben,
      was mir, die mich interessierenden Zeilen mit den Werten die ich
      benoetige, heraus sucht.

      Ja.

      Wo ist bei einem Parsing-Modul dann der Vorteil?

      Ja und wo ist denn nun der Vorteil?
      Ubergeb ich dem Modul nur noch die Tag's die mich interessieren und er erstellt dann ne Liste?

      Akku

      1. hi!

        Wo ist bei einem Parsing-Modul dann der Vorteil?
        Ja und wo ist denn nun der Vorteil?

        Dass du das Parsen eben nicht selbst übernehmen musst, sondern das
        Modul die Aufgabe übernimmt. Das überprüft dann zb. ob die XML-Datei
        den Syntax-Vorgaben entspricht.

        Ubergeb ich dem Modul nur noch die Tag's die mich interessieren und
        er erstellt dann ne Liste?

        Auch das ist möglich, je nach verwendetem XML-Parser. XML::DOM kann
        das zumindest ziemlich direkt so wie du es hier beschreibst.

        bye, Frank!

      2. Hallo Batterie, äh, sorry Akku ;-)

        Wo ist bei einem Parsing-Modul dann der Vorteil?
        Ja und wo ist denn nun der Vorteil?
        Ubergeb ich dem Modul nur noch die Tag's die mich interessieren und er erstellt dann ne Liste?

        Parser stellen Dir die Ergebnisse Ihrer Auswertung über eine Schnittstelle zur Verfügung.
        Für XML gibt es da zwei relevante Standards

        • SAX (Simple API for XML-Processing)
        • DOM (Document Object Model)

        Beim DOM stellt der Parser deinem Programm (das den Parser in Gang setzt) Dein XML-Dokument als Baum zur Verfügung. Du kannst dann mit Zugriffsmethoden durch diesen Baum navigieren und Dir das raussuchen, was du benötigst, aber auch was hinzufügen.

        SAX ist ereignisbasiert. Das bedeutet der Parser meldet Dir: "Dokument hat begonnen" oder auch "<preis>-Element-Starttag ist gerade bei mir vorbeigekommen". Diese Ereignisse kannst du dann mit sogenannten "Event-Handlern" abfangen.
        SAX ist i.A. schneller und weniger speicherintensiv, da ja das Dokument nicht als Baum im Hauptspeicher gehalten wird.
        Nachteil, du musst Dir eben immer merken, was du brauchst, weil es ja nach dem Ereignis "weg" ist, während du beim DOM immer den Zugriff auf alles hast.

        Was XML:Parser unterstützt weiss ich aber nicht.

        Gruß
        Franz

  2. Hallo Akku

    Ich koennte doch unter PERL mir auch ein kleines Programm schreiben, was mir, die mich interessierenden Zeilen mit den Werten die ich benoetige, heraus sucht.

    Selber schreiben kann man viel, aber in diesem Fall wird es wohl eher kein kleines Programm. Eine XML-Datei sieht auf den ersten Blick ja ziemlich einfach aus, aber wenn man sich XML genauer an schaut, wird man sehen, dass es ein sehr mächtiger Standart ist.
    Ein Programm, das eine Schnittstelle zur Verarbeitung von XML bereit stellt (ein Parser), ist also schon etwas komplexer.
    Mit ein paar RegExp oder so hat man da schlechte Karten.

    Grüße

    Daniel