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

Andreas Kunert-Werneburg akunert at main-rheiner.de
Fr Aug 15 01:18:51 PDT 2008


Danke Aristoteles,

genau das eval{...} fehlte mir.

Gruß Andreas

Aristoteles Pagaltzis wrote:
> * 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ß,




Mehr Informationen über die Mailingliste Dresden-pm