Lude: XML::Parser::Expat

Hi,

meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?

Gruss,
Luddie

  1. Hi,

    meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?

    meines Wissens is Expat ein _nicht_ validierender XML-Parser, oder?
    Wenn das noch den gegenwärtigen Entwicklungsstand repräsentiert, wirst Du wohl einen anderen Parser wählen müssen.

    Viele Grüße,
    Martin Jung

  2. Hi Luddie,

    Mit dem Modul XML::Parser kannst Du natürlich ei XML-Dokument auf Wohlgeformtheit überprüfen:

    use XML::Parser;
    my $xmlfile = shift @ARGV;
    my $parser = XML::Parser->new( ErrorContext => 2 );
    eval { $parser->parsefile( $xmlfile ); };

    Fehlermeldung, wenn XML-Datei nicht Wohlgeformt

    if ( $@ ) {
      print STDERR "\nFEHLER in '$xmlfile':\n$@\n";
    } else {
      print STDERR "'$xmlfile' enthält ein wohlgeformtes XML-Dokument\n";
    }

    Den Quellcode habe ich aus dem Buch "Perl & XML" (O'Reilly). Jedoch nicht getestet! Wenn Du aber sowieso gerade mit dem Modul XML::Parser experimentierst, wird das Beispiel dir bestimmt helfen.

    greets
    myMojito

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hi,

      Nur damit ich es verstehe:

      Mit dem Modul XML::Parser kannst Du natürlich ei XML-Dokument auf Wohlgeformtheit überprüfen:

      Aber mit dem Modul XML::Parser::Expat nicht?

      Viele Grüße,
      Martin Jung

      1. Hallo Martin,

        hab gerade nachgelesen, das XML::Parser von XML::Parser::Expat abgeleitet ist. Ich gehe davon aus, das erst das Modul XML::Parser eine komfortable Möglichkeit bietet XML-Dokumente zu verarbeiten.

        Näheres wirst Du wahrscheinlich in der Dokumentation zu den Modulen finden.

        greets
        myMojito

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
    2. Hi,

      hab's erfolgreich getestet (danke), aber neben der Wohlgeformheit gibt's ja noch die Gueltigkeit. - Wie kann man ein XML-Dokument gegen eine DTD validieren? - Modulvorschlaege (Mir ist bewusst, dass es empfehlenswerte und weniger empfehlenswerte Module gibt; meine Frage ist also hoffaehig (an die Forumspolizisten)) willkommen!

      Gruss,
      Lude

  3. Halihallo Lude

    meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?

    http://www.cpan.org/modules/by-module/XML/, dort findest du, wie erwartet, alle
    Module zum Thema XML. Unter anderem auch den XML::Checker oder XML::Checker::Parser,
    wodurch du eine XML Datei validieren kannst. XML::LibXML kommt auch mit einem Validator
    und unterstützt sogar DOM Level 3 (XML::DOM "nur" das Level 1). Du darfst auch gerne
    den XML-DTD-Parser verwenden und deine XML selber validieren ;)

    Wie myMojito implizit sagt, bricht (jeder; auch XML::Parser::Expat [1]) Parser die
    Verarbeitung sofort ab, wenn er feststellt, dass ein Dokument nicht wohlgeformt ist.

    [1] der ist sogar dafür zu verantworten, dass auch XML::Parser "abgewürgt" wird.
    zu myMojito: Jein, XML::Parser hat im Gegensatz zu XML::Parser::Expat einige
    Erweiterungen, wie z. B. das Laden externer Ressourcen oder das Repräsentieren von
    "Nodes" (nicht zu vergleichen mit DOM!), was von Expat nicht bereitgestellt wird
    (XML::Parser::Expat ist einzig allein ein Interface zu Expat). XML::Parser ist also eine
    Erweiterung von XML::Parser::Expat, was jedoch nicht impliziert, dass erst XML::Parser
    eine "konfortablere" Möglichkeit bietet, XML zu verarbeiten.

    Viele Grüsse

    Philipp