[Dresden-pm] Return-Wert von parse_file() XML::LibXML

Aristoteles Pagaltzis pagaltzis at gmx.de
Mo Aug 11 10:34:18 PDT 2008


* Andreas Kunert-Werneburg <akunert at main-rheiner.de> [2008-08-11 11:55]:
> Jetzt würde ich gern VOR dem Verschieben testen, ob das
> XML-File valide ist.

Das geht nur, indem du das XML zu parsen versuchst. Von außen
ansehen kann man es der Datei schlecht. ;-)

> Jetzt würde ich gern VOR dem Verschieben testen, ob das
> XML-File valide ist. Ist das nicht der Fall, so soll es in
> einen anderen Ordner verschoben werden und der Parser NICHT
> gestartet werden.

Warum ist das so wichtig?

> ich arbeite mit XML::LibXML und frage mich, ob ich bei my
> $document = $parser->parse_file($xmlfilename); einen Returnwert
> erhalten würde, mithilfe dessen ich die entsprechende
> Verschiebe-Operation einleiten kann.

Du kannst mit `eval { ... }` die Exception abfangen, die von
LibXML generiert wird, wenn der Parse-Versuch fehlschlägt.

> Mal laienhaft:
> ------------------------------------------
> $parser = new XML::LibXML;
> if($parser->parse_file($xmlfile) == TRUE){
> verschiebe nach A und rufe Parser auf;
> } else {
> verschiebe nach B und melde Fehler per Mail;
> }
> -------------------------------------------
>
> Mir gehts eigentlich nur darum, zu prüfen, ob die Datei valides
> XML enthält. Den Rest bekomme ich dann schon hin.

    my $doc;
    eval { $doc = XML::LibXML->new->parse_file( $xmlfile ) };

    if ( $doc ) {
        # verschiebe nach A
        # Parser-Aufruf nicht mehr nötig, einfach $doc nehmen
    }
    else {
        # verschiebe nach B und melde Fehler per Mail
    }

Gruß,
-- 
Aristoteles Pagaltzis // <http://plasmasturm.org/>


Mehr Informationen über die Mailingliste Dresden-pm